Време за изчакване на JAXWS клиент на Jboss

как мога да задам изчакване за JAXWS клиент, използвам Jboss 5.1. Опитвах се да направя това с

bp.getRequestContext().put("com.sun.xml.ws.connect.timeout", 100);
bp.getRequestContext().put("com.sun.xml.ws.request.timeout", 100);

но не става. Работи добре за самостоятелен клиент.

Когато се опитах да използвам

bp.getRequestContext().put("com.sun.xml.ws.request.timeout", 100);

Имам org.jboss.ws.core.WSTimeoutException: Изчакване след: 100 ms, но се случва след 300 (3*100 ms).

Може ли някой да ми помогне с този проблем.


person catmancer    schedule 29.11.2012    source източник


Отговори (2)


Въпреки че това изглежда вероятно да е пропуск от ваша страна, настройките за времеви изчаквания на JAX-WS може да зависят от конкретния RI, върху който надграждате.

Можете да опитате тези настройки (те са сдвоени, за да се използват по двойки)

   BindingProviderProperties.REQUEST_TIMEOUT
   BindingProviderProperties.CONNECT_TIMEOUT

BindingProviderProperties трябва да е от com.sun.xml.internal.WS.client

Или струните

   javax.xml.ws.client.connectionTimeout
   javax.xml.ws.client.receive timeout

Всички свойства да бъдат поставени на getRequestContext() за милисекунди.

Между другото, как успя да засечеш милисекундите без код :)?

person kolossus    schedule 30.11.2012

JAXWS използва JAXB за маршалинг и демаршалинг.

В контейнера вероятно отнема повече време, защото JAXContext сканира вашия клас път.

Ако случаят е такъв, опитайте нетърпелива инициализация на JaxBContext:

JBossWS може да работи по различен начин по време на първото извикване на метод на всяка услуга и следващите, когато се препращат огромни wsdl договори (със стотици импортирани xml схеми). Това се дължи на куп операции, извършени вътрешно по време на първото извикване, чиито получени данни след това се кешират и използват повторно по време на следващите. Въпреки че обикновено това не е проблем, може да се интересувате от почти еднаква производителност при всяко извикване. Това може да се постигне чрез настройка на системното свойство org.jboss.ws.eagerInitializeJAXBContextCache на true, както от страна на сървъра (в началния скрипт на JBoss), така и от страна на клиента (удобна константа е налична в org.jboss.ws.Constants). Създаването на JAXBContext обикновено е отговорно за по-голямата част от времето, необходимо на стека по време на първото извикване; тази функция кара JBossWS да се опитва нетърпеливо да създава и кешира JAXB контекстите, преди да бъде обработено първото извикване.

http://www.mastertheboss.com/javaee/jboss-web-services/web-services-performance-tuning

person edubriguenti    schedule 24.11.2014