У меня есть два экземпляра Tomcat 6, которые оба вызывают EJB на удаленном сервере JBoss 5.
С одинаковым клиентским кодом, развернутым на обоих Tomcats, я получаю NullPointerException
с сервера приложений, когда один из них вызываетМетод EJB, хотя с другой стороны он работает нормально.
Просматривая код с помощью отладчика, кажется, что хеш-код вызываемого метода различен для двух вызовов, хотя я предполагаю, что это должно бытьтот же самый.Поскольку хеш-код отличается, удаленный метод не найден в org.jboss.ejb3.service.ServiceContainer
.
Что может привести к различию хеш-кода между двумя вызовами?Для информации работающий Tomcat находится на той же машине, что и сервер JBoss, а сбойный Tomcat должен подключаться к JBoss через сеть.Обе конфигурации подключения Tomcats одинаковы.
Решением было наличие jboss-aspect-jdk50-client_4.2.2.jar
в каталоге lib Tomcat - удаление этого файла позволило приложению работать правильно.
Что ядо сих пор не понимаю, почему это работает на локальном экземпляре Tomcat, но не на удаленном.Я предполагаю, что либо порядок загрузки классов был каким-то другим образом, либо, что более вероятно, тот факт, что связь была удаленной, привел к использованию другой стратегии.
Я оставляю вопрос открытым на всякий случай, если кто-томожет дать объяснение этому последнему биту.