EJB3方法哈希在何处以及如何计算?

时间:2011-06-20 09:50:45

标签: ejb-3.0 tomcat6 jboss5.x

我有两个Tomcat 6实例,它们都在远程JBoss 5服务器上调用EJB。

在两个Tomcats上部署了相同的客户端代码,当一个人调用EJB方法时,我从应用程序服务器获得NullPointerException,而另一个则可以正常工作。

使用调试器查看代码,看起来调用的方法的哈希码在两个调用之间是不同的,即使我认为它应该是相同的。由于哈希码不同,因此在org.jboss.ejb3.service.ServiceContainer中找不到远程方法。

什么可能导致两个调用之间的哈希码不同?有关信息,工作的Tomcat与JBoss服务器位于同一台机器上,而失败的Tomcat必须通过网络连接到JBoss。两个Tomcats的连接配置都是一样的。


解决方案是在Tomcat的lib目录中存在jboss-aspect-jdk50-client_4.2.2.jar - 删除此文件允许应用程序正常工作。

我仍然不明白为什么这可以在本地Tomcat实例上工作但不在远程上工作。我假设类加载顺序在某种程度上是不同的,或者更可能的是,通信是远程的,导致使用不同的策略。

如果有人可以提供最后一点的解释,我会暂时保持这个问题。

1 个答案:

答案 0 :(得分:1)

非常奇怪。是否所有三台服务器都运行相同版本的代码?