Очистка файла cookie Microsoft.XMLHTTP в Lotusscript

У меня есть агент Lotusscript, который создает объект Microsoft.XMLHTTP. Этот объект обращается к сервлету и получает транзакции с момента моего последнего запроса.

Вот что делается:

Set objHttp = CreateObject("Microsoft.XMLHTTP")     
objHttp.open "POST", theUrl, False, "", ""  
objHttp.setRequestHeader "Content-type", specific_for_customer  
objHttp.send(theReq)    
headers = objHttp.getAllResponseHeaders()   
response = objHttp.responseText     
'...do the stuff...     
Set objHttp=Nothing

Это работает очень хорошо, пока вы держите сессию открытой и задаете вопросы. Но если, как в моем случае, намерение состоит в том, чтобы запускать этот агент каждые 5 минут, у меня возникла проблема.

Я закрываю объект, как и ожидалось. Когда я снова запускаю агент, сервлет не принимает мой доступ, так как у меня есть файл cookie сеанса в моем запросе (и он не принят).

В моем мире этот файл cookie сеанса, согласованный сервлетом и моим кодом 5 минут назад, должен быть удален, когда я сделал Set objHttp=Nothing. Я тоже не могу найти куки. Я предполагаю, что каким-то особым/странным образом менеджер агента Domino сохраняет файл cookie (но где) и пытается использовать его, когда я снова подключаюсь.

Во время сеанса с сервлетом я могу найти значение для файла cookie, но не при подключении при следующем запуске агента.

Единственный способ снова установить сеанс — перезапустить диспетчер агентов.

Я пробовал несколько способов найти и удалить файл cookie (не могу найти).

В моем способе устранения этой проблемы я даже скопировал агент, а затем запустил этот агент, и у меня нет доступа к сервлету, поэтому подозреваемым здесь является менеджер агентов...

Может у кого была похожая проблема.

So..

  • Как я могу очистить файлы cookie от менеджера агентов, которые в первую очередь должны быть очищены, когда я закрыл XML-объект
  • Как я могу очистить «память» менеджера агентов, чтобы забыть обо всем
  • Как я могу перезапустить диспетчер агентов из кода или по расписанию?

Надеюсь на помощь в некотором роде


person Stefan K    schedule 06.05.2014    source источник


Ответы (2)


Установка objHTTP=nothing только разыменовывает объект. Он не выгружает библиотеку DLL, предоставившую этот объект, или другие загруженные библиотеки DLL (которые в данном случае представляют собой большой кусок стека Microsoft на основе IE). Он не очищает память, выделенную этими библиотеками DLL для этого объекта. И поскольку AMGR — это процесс, который загружает эти библиотеки DLL, а AMGR все еще работает, это почти то же самое, как если бы вы запустили браузер, подключились к этому сайту, открыли кучу других вкладок браузера, закрыли вкладку с файлом cookie сеанса. , подождал 5 минут, затем открыл новую вкладку и вернулся на тот сайт. Печенька еще есть.

Установка objHTTP=nothing аналогична закрытию вкладки. Microsoft думает, что делает вам одолжение, делая это. Как и в случае с браузером, лучший способ справиться с этим — выйти из системы. Если сайт предлагает URL-адрес выхода, подключитесь к нему, прежде чем устанавливать objHTTP=nothing. Это должно заставить сервер аннулировать файл cookie для вас.

person Richard Schwartz    schedule 06.05.2014
comment
Спасибо, это то, о чем я догадывался, но надеялся, что это не так ;-) - person Stefan K; 09.05.2014

Вы можете переключиться на Java для HTTP-коммуникаций. Образец в ссылке имеет повторно используемый код и прекрасно переносит его в LS2J. Также: он будет работать на всех платформах

person stwissel    schedule 08.05.2014
comment
Я пытался избежать изменения направления, так как другие материалы уже там ... Я проверю вашу ссылку, когда ваш блог снова заработает. - person Stefan K; 09.05.2014
comment
Больше других вещей, вызывающих головную боль, не уменьшает боль. Лучший совет для работы с дохлой лошадью (например, мой сервер с мертвыми жесткими дисками): размонтировать. - person stwissel; 09.05.2014