Axis Web Service Keep Alive

Имам уеб услуга на ос, работеща в Tomcat. Клиентите правят връзки, без да изпращат Connection: close header в HTTP 1.1, което означава, че по подразбиране е Keep-Alive. За съжаление клиентът изглежда има проблем и когато получи изключение, клиентът не затваря връзката. Тъй като тези клиенти изпращат много трафик в пакетни задачи, това бързо изяжда всичките ми връзки. Искам да принудя моята уеб услуга да затваря всяка връзка веднага щом конкретен манипулатор (разширява BasicHandler) завърши.

Как да направя това? т.е. как да принудя сървъра да затвори връзка след извикване на BasicHandler#invoke()?


person John    schedule 17.07.2009    source източник


Отговори (1)


Във файла server.xml на вашия tomcat намерете дефиницията на HTTP конектор (това е елементът с protocol="HTTP/1.1") и добавете атрибута keepAliveTimeout, както е описано тук:

http://tomcat.apache.org/tomcat-6.0-doc/config/http.html

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

Имайте предвид, че това са документите на Tomcat 6, така че не всички опции може да работят на tomcat 5, така че проверете същата част от документите на tomcat 5.

person skaffman    schedule 17.07.2009
comment
Знаех за този вариант. Проблемът е, че е за целия сървър. Не искам да се забърквам с моя JSP и servlet keep alive timeout. Само тази уеб услуга. - person John; 17.07.2009
comment
HTTP обработката обаче не е изложена на приложението. Предлагам ви да дефинирате друг HTTP конектор в server.xml, на различен порт, и да накарате клиентите на уеб услугата да го използват. - person skaffman; 17.07.2009
comment
:) Съжалявам. Вчера имах ‹5 резултат, така че все още не можах да го направя. (нов потребител) PS. Случайно не знаете как да постигнете същото с websphere, нали? Приложението ми е внедрено както в Tomcat, така и в WebSphere. - person John; 17.07.2009
comment
Страхувам се, че не, не. Може да обмислите поставянето на уеб сървъра на Apache пред вашите сървъри за приложения. Това ще ви даде общ контрол върху връзките, като apache прави http конфигурацията вместо сървъра за приложения и също така ще ви позволи да използвате mod_rewrite за автоматично насочване на заявки за уеб услуги към новия tomcat конектор, така че клиентът да не трябва да променя URL адреса си . - person skaffman; 17.07.2009