1

我在没有任何问题的情况下获得了对远程 EJB 实例的引用,但有时,当我调用它的一个方法时,会从客户端抛出“java.net.SocketTimeoutException: Read timed out” 。服务器端似乎没有问题

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

我正在使用一个相当旧的 JBoss 版本(4.2.1 GA)

问候

4

1 回答 1

1
  1. 您可以为连接器 MBean 配置InvokerLocater属性。

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

  2. 可以为配置属性下的配置元素提供更详细的信息。默认为一分钟。

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

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

    jnp.timeout :以毫秒为单位的连接超时。默认值为 0,这意味着连接将阻塞,直到 VM TCP/IP 层超时。

    jnp.sotimeout :连接的套接字读取超时,以毫秒为单位。默认值为 0,这意味着读取将阻塞。这是传递给新连接套接字上的 Socket.setSoTimeout 的值。

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

于 2013-04-09T04:59:17.537 回答