#java #jndi #websphere-8 #corba #ejb-2.x
Вопрос:
com.ibm.ws.naming.util.InvalidObjectException: Some object reference in the name "MyEJB" relative to the context "path/to/myserver" is invalid.
Some possible causes include a context binding in the name which refers to a destroyed context, or an object binding which contains an invalid EJBHome reference.
[Root exception is org.omg.CORBA.INV_OBJREF: Could not resolve IOR string. vmcid: 0x0 minor code: 0 completed: No]
Поиск других ejb в приложении работает. Разница в том, что класс bean этого ejb был изменен, и в ear был обновлен только новый файл класса, а приложение было обновлено с помощью этого файла ear в консоли администратора.
Нужно ли мне заново создавать код развертывания(заглушка/привязка и т.д.) Для ejb?
Комментарии:
1. Код развертывания EJB необходимо восстановить только в том случае, если были изменены интерфейсы компонентов или изменилась сигнатура методов реализации компонентов. Если они не изменились, то, скорее всего, проблема в том, что компонент не запустился. Проверьте журналы (Systemout. журнал и журналы FFDC) для любых других ошибок, связанных с этим EJB. Возможно, приложение запустилось нормально, но обычно инициализация EJB откладывается до первого использования, что часто происходит при первом поиске компонента. Наконец, убедитесь, что журналы содержат сообщение CNTR0167I, указывающее, что компонент был привязан в JNDI с использованием имени поиска.
2. @Tracy Благодарю вас за ваш быстрый и очень полезный ответ и приношу извинения за мое медленное подтверждение того же самого! Да, проблема заключалась в том, что EJB не запускался из-за расхождений в сигнатурах метода компонента между интерфейсом и реализацией. Возможная причина того, что компонент не привязан к JNDI, может быть исключена, так как ошибка в этом случае будет не найдена. Если вы повторно опубликуете свой комментарий в качестве ответа, я отмечу его как принятый ответ.
3. Спасибо, сделаю.
Ответ №1:
Код развертывания EJB необходимо восстановить только в том случае, если были изменены интерфейсы компонентов или изменилась сигнатура методов реализации компонентов. Если они не изменились, то, скорее всего, проблема в том, что компонент не запустился. Проверьте журналы (Systemout.журнал и журналы FFDC) для любых других ошибок, связанных с этим EJB. Возможно, приложение запустилось нормально, но обычно инициализация EJB откладывается до первого использования, что часто происходит при первом поиске компонента. Наконец, убедитесь, что журналы содержат сообщение CNTR0167I, указывающее, что компонент был привязан в JNDI с использованием имени поиска.