Изменение настройки времени ожидания сгенерированного Axis 1.4 SOAP Java-клиента - PullRequest
3 голосов
/ 16 марта 2012

У меня проблема с изменением стандартных параметров, используемых сгенерированным клиентским кодом веб-службы 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 ]

3 голосов
/ 04 декабря 2014

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

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

0 голосов
/ 21 октября 2015

Объект порта Typecast для org.apache.axis.client.Stub.

(т.е.) org.apache.axis.client.Stub stub = (org.apache.axis.client.Заглушка);; 1004 *

Затем установите все свойства:

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);

...