我有两个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实例上,而不是在远程上。我认为,无论是加载顺序都有所不同,或者更可能的是,通信很遥远,导致使用不同的策略。
为了防万一有人能够提供对最后一点的解释,我保持开放的问题。
差不多:)看到我编辑的答案 - 你或许能够解释... – Rich
Tomcat如何连接到JBoss?简单的旧RMI? Tomcat中的某种EJB3客户机容器? –
根据存在的Jars判断(我对代码没有责任,我只是最后一招:))它使用JBoss 5客户端库连接到jnp:// URL - 4.2.2 jar是一个迷路。 – Rich