Изменение настройки времени ожидания сгенерированного 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 ответа

Я думаю, что это может быть ошибка, как указано здесь:

https://issues.apache.org/jira/browse/AXIS-2493?jql=text%20~%20%22CONNECTION_DEFAULT_CONNECTION_TIMEOUT_KEY%22

Введите объект порта службы для 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);

Другие вопросы по тегам