2011-06-20 39 views
0

我有两个Tomcat 6实例,它们都在远程JBoss 5服务器上调用EJB。在哪里以及如何计算EJB3方法哈希值?

由于在Tomcat上部署了相同的客户端代码,因此当调用EJB方法时,我从应用程序服务器获得NullPointerException,而在另一方面它工作正常。

通过调试程序查看代码,似乎被调用的方法的哈希代码在两次调用之间是不同的,尽管我认为它应该是相同的。由于散列码不同,因此在org.jboss.ejb3.service.ServiceContainer中找不到远程方法。

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


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

我还是不明白为什么这个工作在本地Tomcat实例上,而不是在远程上。我认为,无论是加载顺序都有所不同,或者更可能的是,通信很遥远,导致使用不同的策略。

为了防万一有人能够提供对最后一点的解释,我保持开放的问题。

回答

1

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

+0

差不多:)看到我编辑的答案 - 你或许能够解释... – Rich

+0

Tomcat如何连接到JBoss?简单的旧RMI? Tomcat中的某种EJB3客户机容器? –

+0

根据存在的Jars判断(我对代码没有责任,我只是最后一招:))它使用JBoss 5客户端库连接到jnp:// URL - 4.2.2 jar是一个迷路。 – Rich