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