我在Jboss 5.1上部署了两个ear应用程序(EJB 3.0)。来自应用程序A的SLSB通过@EJB注释从应用程序B调用远程SLSB。 一切正常,直到我重新部署应用程序B.然后来自A应用程序的bean尝试从B调用它,并且它的引用变为null。
我认为SLSB是合并的,并且在创建时注入了引用,并且在重新部署之后,这些代理不会以某种方式刷新。
我该如何应对?是否可以在该bean上放置一个拦截器并检查所有带注释的引用是否都不为空?
答案 0 :(得分:1)
如果重新部署/取消部署应用程序或网络出现故障,则代理对象将失效。
您可以使用ServiceLocator模式缓存远程对象的引用。你可以删除&如果失败,再次使用JNDI查找重新创建它们。
否则,不是使用@EJB来注入远程bean,而是每次都需要手动查找资源消耗,但前者是更好的方法。