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