我正在获取对远程EJB实例的引用而没有任何问题,但有时,当我调用其中一个方法时,“java.net.SocketTimeoutException:read timed out”是从客户端抛出。服务器端似乎没有问题
有没有办法在每次调用的基础上设置EJB客户端超时?
我使用的是非常古老的JBoss版本(4.2.1 GA)
问候
答案 0 :(得分:1)
您可以为Connector MBean配置InvokerLocater
属性。
<attribute name="InvokerLocator">socket://{jboss.bind.address}:3873/?socketTimeout=60000</attribute>
可以在Configuration属性下为config元素提供更精细的细节。默认情况下,它是一分钟。
<attribute name="socketTimeout">60000</attribute>
在JNDI属性文件中提供超时参数。
jnp.timeout:连接超时(以毫秒为单位)。默认 value为0表示连接将阻塞,直到VM TCP / IP为止 层超时。
jnp.sotimeout:连接的套接字读取超时(以毫秒为单位)。该 默认值为0表示读取将被阻止。这是价值 传递给新连接的套接字上的Socket.setSoTimeout。
要手动配置各个调用的超时,您必须使用适当的属性值创建初始上下文。