【问题标题】:JAXWS Client Timeout on JbossJboss 上的 JAXWS 客户端超时
【发布时间】:2012-11-29 10:10:11
【问题描述】:

我如何为 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: Timeout after: 100ms,但它在 300 (3*100 ms) 之后发生。

谁能帮我解决这个问题。

【问题讨论】:

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


    【解决方案1】:

    虽然这看起来可能是您的疏忽,但 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() 上。

    顺便说一句,你是如何在没有代码的情况下计算毫秒的:)?

    【讨论】:

      【解决方案2】:

      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

      【讨论】:

        猜你喜欢
        • 2011-12-24
        • 2015-01-15
        • 1970-01-01
        • 1970-01-01
        • 2019-04-19
        • 1970-01-01
        • 2014-11-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多