我有兩個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