我有一个JBoss EAP 6.1的实例,其中我部署了2个EJB应用程序。 服务器启动时没有错误!
现在我已经创建了一个javaSE应用程序来调用这些EJB。
这就是问题......
如果我从applicationA/EJBBean!br.com.sample.EJBRemote
查找EJB,它工作正常,我可以调用它的任何方法。
但是,我从applicationB/EJBBean!br.com.sample.EJBRemote
查找EJB它可以正常工作。但是,当我调用一个方法时,javaSE应用程序会停止。我没有错误,没有输出。
我在方法实现的第一行放了一个断点,我发现它没有被执行。
我的查找代码如下:
public static <T> T getEJB(final String moduleName, final String beanName, final Class<T> viewClass) throws NamingException {
final String lookupName = aplicationName + "/" + beanName + "!" + viewClass.getName();
return (T) ic.lookup(lookupName);
}
我用一种主要的方法来称呼它:
final MyRemote beanA = EJBUtils.getEJB("appA", "MyBean", MyRemote.class);
final MyRemote beanB = EJBUtils.getEJB("appB", "MyBean", MyRemote.class);
两者都运作良好
但是当我这样做时:
beanA.methodA(); // This works and prints "methodA" onto console.
beanB.methodA(); // This doesn't work. And dont print any thing onto console.
System.out.println("...") // This line doesn't execute
答案 0 :(得分:0)
您正尝试从两个不同的部署中查找相同的bean。我从来没有见过这个。你应该在BeanARemote,BeanA jar等中使用BeanA.BeanB作为BeanBRemote,BeanB jar等。我想如果你将整个东西包装在一个catch块中你会看到当你在BeanB上调用一个方法时抛出的exceptino 。在您尝试使用它之前,查找并不总是抛出异常。
答案 1 :(得分:-1)
看起来像内存问题。转到JVM安装文件夹并查找堆转储。你一定会得到一些线索。