У меня следующая проблема:
- Java-веб-приложение, которое генерирует Voice XML - на основе структур - развернутое в IBM WebSphere AS (WAS v.7.0.0.7).
- Приложение использует Axis2 java - v.1.5 - клиент веб-службы для вызова веб-службы, находящейся в WebLogic AS.
- Я установил тайм-аут на 1000 мс, используя:
stub.getServiceClient().getOptions().setTimeOutInMilliSeconds(1000);
- Максимальное количество обращений приложения к веб-службе составляет около 25 000 в час - около 7 одновременных вызовов.
- После помещения кода, вызывающего веб-службу, в блок try-catch, я ловлю исключение и возвращаюсь из метода.
- В среднем выдается около 200 исключений - в WAS - в час из-за истечения таймера либо при открытии соединения, либо при чтении результата вызова веб-службы
- По логу
exception.getMessage();
Я получаю одно из следующих, в основном первое:
org.apache.commons.httpclient.ConnectTimeoutException: The host did not accept the connection within timeout of 60000 ms
или
org.apache.axis2.AxisFault: Read timed out
- Проблема в том, что через некоторое время сервер приложений зависает, не отвечает на входящие запросы или через некоторое время отвечает, что заставляет нас перезапускать сервер приложений, это происходило примерно 3 раза за 10 дней. ,
- Просматривая журналы, я не нашел ничего, кроме исключений, возникших из-за истечения времени ожидания, может быть, есть что-то, что говорит о большем, но я еще не нашел его.
- Есть ли руководящие указания, которые я должен рассмотреть в приведенном выше сценарии? Можно ли написать код очистки, чтобы освободить соединение, если это не так? Можем ли мы определить причину проблемы из приведенного выше описания? Является ли поведение сервера приложений "нормальным"?
Я прошу прощения за длинное описание / вопрос, я всегда ценю вашу помощь!