Веб-сервис на Tomcat с тайм-аутом - PullRequest
0 голосов
/ 17 декабря 2010

У меня есть приложение, которое работает около 30 минут.с некоторыми входными данными.Он также содержит тестовые данные, поэтому приложение занимает около 30 секунд.

Приложение должно быть доступно в веб-сервисе.Я использовал CXF и Tomcat.Все отлично работает с testdata.Для реальных данных время ожидания составляет около 1 минуты: исключение SocketTimeoutException

Я просмотрел все параметры времени ожидания (server.xml, все web.xml), но это не помогло.

Мое приложение занимает очень много памяти.Я добавил это значение vm на сервер -Xmx1600m.Без, я получаю OutOfMemoryException

Есть идеи, что я еще могу попробовать?Могу ли я установить память на уровне сессии?Спасибо!

1 Ответ

2 голосов
/ 17 декабря 2010

Отказ от ответственности: я никогда не работал с CXF

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

В приведенном примере кода указано, что использование HTTPConduit с HTTPCLientPolicy может решить проблему.

MyWebService service = new MyWebService();
MyWebServicePortType client = service.MyWebServicePort();

Client cl = ClientProxy.getClient(client);

HTTPConduit http = (HTTPConduit) cl.getConduit();

HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();
httpClientPolicy.setConnectionTimeout(0);
httpClientPolicy.setReceiveTimeout(0);

http.setClient(httpClientPolicy);

client.doSomething(...);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...