如何为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)之后它正在升空。
任何人都可以帮我解决这个问题。
答案 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