是否可以中断挂起InitialContext.lookup
来电?
原因:我在Glassfish服务器上部署了一个EJB jar。当我尝试从客户端进行远程EJB查找(通过java web start启动)时,当服务器无法访问时(例如,服务器关闭或客户端未连接到Internet),查找将永久挂起。因此,我需要有可能中断执行查找的线程,否则线程将永远运行。
我尝试设置ORBTCPConnectTimeouts
,但InitialContext
似乎忽略了它。
编辑
InitialContext ctx = new InitialContext();
ctx.lookup("EJBName"); // Here it hangs when server not reachable
答案 0 :(得分:1)
根据我的经验,当JNDI服务不可用时,客户端立即获得异常,我的意思是您不需要设置timeOut值来处理这种情况。您确定在服务器脱机时没有收到异常吗?可能是你没有正确处理它。
如果您未指定任何JNDI属性,则会假定客户端在与服务器相同的计算机上运行。
当客户端是远程客户端时,您需要指明一些属性以允许客户端连接到JNDI服务器。您需要指出的最直观的属性是IP和PORT。否则,如何知道服务器位置?
这些属性是键/值对的列表,可以主要以两种不同的方式定义:使用jndi.properties文件或使用其他签名直接在客户端代码中:InitialContext(Hashtable environment)。
这些JNDI属性取决于供应商,这个link提供了一个示例。
您还需要在客户端的类路径中添加文件gf-client.jar。
您会注意到在正确实施客户端时无需设置timeOut。