Изменение настройки времени ожидания сгенерированного Axis 1.4 SOAP Java-клиента
У меня проблема с изменением стандартных параметров, используемых сгенерированным клиентским кодом веб-службы Axis 1.4. Мы используем определенный веб-сервис партнера, который использует старый стиль RPC/Encoded, что в основном означает, что мы не можем использовать Axis 2, но ограничены Axis 1.4.
Сервисный клиент получает данные с удаленного сервера через наш прокси, который на самом деле работает довольно хорошо.
Наше приложение развернуто как сервлет. Полученный ответ иностранного веб-сервиса вставляется в (XML) документ, который мы предоставляем нашим внутренним системам /CMS. Но если внешняя служба не отвечает - что еще не произошло, но может произойти в любое время - мы хотим приятно ухудшиться и вернуть наш произведенный XML-документ без рассчитанной информации веб-службы в разумные сроки. Полученные данные являются необязательными (если этот конкретный расчет отсутствует, это не является большой проблемой).
Поэтому я попытался изменить настройки тайм-аута. Я применил / использовал все методы и ключи, которые я мог найти в документации по оси, чтобы изменить время ожидания соединения и сокета с помощью поиска в Интернете. Кажется, что ни один из них не влияет на время ожидания соединения.
Может кто-нибудь дать мне совет, как изменить настройки для заглушки оси / службы / порта на основе версии 1.4?
Вот пример для нескольких конфигураций, которые я попробовал:
MyService service = new MyServiceLocator();
MyServicePort port = null;
try {
port = service.getMyServicePort();
javax.xml.rpc.Stub stub = (javax.xml.rpc.Stub) port;
stub._setProperty("axis.connection.timeout", 10);
stub._setProperty(org.apache.axis.client.Call.CONNECTION_TIMEOUT_PROPERTY, 10);
stub._setProperty(org.apache.axis.components.net.DefaultCommonsHTTPClientProperties.CONNECTION_DEFAULT_CONNECTION_TIMEOUT_KEY, 10);
stub._setProperty(org.apache.axis.components.net.DefaultCommonsHTTPClientProperties.CONNECTION_DEFAULT_SO_TIMEOUT_KEY, 10);
AxisProperties.setProperty("axis.connection.timeout", "10");
AxisProperties.setProperty(org.apache.axis.client.Call.CONNECTION_TIMEOUT_PROPERTY, "10");
AxisProperties.setProperty(org.apache.axis.components.net.DefaultCommonsHTTPClientProperties.CONNECTION_DEFAULT_CONNECTION_TIMEOUT_KEY, "10");
AxisProperties.setProperty(org.apache.axis.components.net.DefaultCommonsHTTPClientProperties.CONNECTION_DEFAULT_SO_TIMEOUT_KEY, "10");
logger.error(AxisProperties.getProperties());
service = new MyClimateServiceLocator();
port = service.getMyServicePort();
}
Я назначил изменения свойств до создания службы и после, я установил свойства во время инициализации, я попробовал несколько других ключей тайм-аута, которые я нашел,... Я думаю, что я злюсь на это и начинаю забывать то, что я уже пытался!
Что я делаю неправильно? Я имею в виду, что должна быть возможность, не так ли?
Если я не найду правильного решения, я подумал о настройке синхронизированного потока с тайм-аутом в нашем коде, который на самом деле кажется довольно неловким и несколько глупым. Можете ли вы представить что-нибудь еще?
заранее спасибо
Jens
axis1.4 Java-клиент мыло wsdl2java rpc/ закодированный сервлет xml сгенерированный изменение настройки заглушки тайм-аут подключения ключи сокета методы
2 ответа
Я думаю, что это может быть ошибка, как указано здесь:
Введите объект порта службы для org.apache.axis.client.Stub.
(т. е.) org.apache.axis.client.Stub stub = (org.apache.axis.client.Stub) порт;
Затем установите все свойства:
stub._setProperty (org.apache.axis.client.Call.CONNECTION_TIMEOUT_PROPERTY, 10); stub._setProperty (org.apache.axis.components.net.DefaultCommonsHTTPClientProperties.CONNECTION_DEFAULT_CONNECTION_TIMEOUT_KEY, 10); stub._setProperty (org.apache.axis.components.net.DefaultCommonsHTTPClientProperties.CONNECTION_DEFAULT_SO_TIMEOUT_KEY, 10);