EJB客户端调用中的SocketTimeoutException

时间:2013-04-04 08:42:04

标签: java ejb-3.0 jboss-4.2.x

我正在获取对远程EJB实例的引用而没有任何问题,但有时,当我调用其中一个方法时,“java.net.SocketTimeoutException:read timed out”是从客户端抛出。服务器端似乎没有问题

有没有办法在每次调用的基础上设置EJB客户端超时?

我使用的是非常古老的JBoss版本(4.2.1 GA)

问候

1 个答案:

答案 0 :(得分:1)

  1. 您可以为Connector MBean配置InvokerLocater属性。

    <attribute name="InvokerLocator">socket://{jboss.bind.address}:3873/?socketTimeout=60000</attribute>

  2. 可以在Configuration属性下为config元素提供更精细的细节。默认情况下,它是一分钟。

    <attribute name="socketTimeout">60000</attribute>

  3. 在JNDI属性文件中提供超时参数。

      

    jnp.timeout:连接超时(以毫秒为单位)。默认   value为0表示连接将阻塞,直到VM TCP / IP为止   层超时。

         

    jnp.sotimeout:连接的套接字读取超时(以毫秒为单位)。该   默认值为0表示读取将被阻止。这是价值   传递给新连接的套接字上的Socket.setSoTimeout。

    要手动配置各个调用的超时,您必须使用适当的属性值创建初始上下文。