Jboss上的JAXWS客户端超时

时间:2012-11-29 10:10:12

标签: java jax-ws jboss5.x connection-timeout

如何为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);

I.ve得到了org.jboss.ws.core.WSTimeoutException:超时后:100ms,但是在300(3 * 100 ms)之后它正在升空。

任何人都可以帮我解决这个问题。

2 个答案:

答案 0 :(得分:0)

虽然这可能是您的疏忽,但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()上的属性,以毫秒为单位。

顺便说一下,你怎么能在没有代码的情况下计算毫秒数?)?

答案 1 :(得分:0)

JAXWS 使用 JAXB 进行编组解组

在容器中可能需要花费更多时间,因为它JAXContext扫描你的类路径。

如果是这种情况,请尝试急切初始化JaxBContext:

  

JBossWS在第一次方法调用期间可能会执行不同的操作   当巨大的wsdl合同时,每个服务和以下服务   引用了数百个导入的xml模式。这是由于   在第一次调用期间在内部执行的一堆操作   然后,在下面的过程中缓存并重用其结果数据   那些。虽然这通常不是问题,但您可能会感兴趣   在每次调用时具有几乎相同的性能。这可以   设定org.jboss.ws.eagerInitializeJAXBContextCache   系统属性为true,两者都在服务器端(在JBoss start中)   脚本)和客户端(一个方便的常量可用于   org.jboss.ws.Constants)。通常是创建JAXBContext   负责堆栈期间所需的大部分时间   第一次调用;这个功能使JBossWS试图热切地创建和   在处理第一次调用之前缓存JAXB上下文。

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