1

是否可以中断挂起的InitialContext.lookup通话?

原因:我在 Glassfish 服务器上部署了一个 EJB jar。当我尝试从客户端(通过 java web start 启动)进行远程 EJB 查找时,当服务器无法访问时(例如服务器关闭或客户端未连接到 Internet),查找将永远挂起。因此,我需要有可能中断进行查找的线程,否则线程将永远运行。

我尝试设置ORBTCPConnectTimeouts,但它似乎被InitialContext.

编辑

InitialContext ctx = new InitialContext();
ctx.lookup("EJBName"); // Here it hangs when server not reachable
4

1 回答 1

1

根据我的经验,当 JNDI 服务不可用时,客户端立即得到一个异常,我的意思是你不需要设置一个 timeOut 值来处理这种情况。当服务器离线时,您确定没有出现异常吗?可能是您没有正确处理它。


如果您不指定任何 JNDI 属性,它将假定客户端与服务器在同一台机器上运行。

当客户端是远程的时,您需要指明一些属性以允许客户端连接到 JNDI 服务器。您需要指出的最直观的属性是 IP 和 PORT。不然怎么知道服务器位置?

这些属性是键/值对列表,主要可以通过两种不同的方式定义:使用 jndi.properties 文件或直接在客户端代码中使用其他签名: InitialContext(Hashtable environment) 。

这些 JNDI 属性取决于供应商,此链接提供了一个示例。

您还需要将文件 gf-client.jar 添加到客户端的类路径中。

您会注意到,当客户端正确实现时,没有必要设置超时。

于 2013-07-19T23:01:01.370 回答