Исключение ClassNotFoundException при работе с удаленным EJB в WebLogic 11g

#java #ejb #weblogic

#java #ejb #weblogic

Вопрос:

Я мог бы поклясться, что делал это раньше, просто не уверен, что я забываю. Я получаю исключения class not found при работе с удаленными EJB от клиента Java SE, который обращается к Weblogic 11g.

 javax.naming.NamingException: Unhandled exception in lookup [Root exception is org.omg.CORBA.MARSHAL:   vmcid: SUN  minor code: 257 completed: Maybe]
    at weblogic.corba.j2ee.naming.Utils.wrapNamingException(Utils.java:83)
    at weblogic.corba.j2ee.naming.ContextImpl.lookup(ContextImpl.java:291)
    at weblogic.corba.j2ee.naming.ContextImpl.lookup(ContextImpl.java:227)
    at javax.naming.InitialContext.lookup(InitialContext.java:392)
Caused by: org.omg.CORBA.MARSHAL:   vmcid: SUN  minor code: 257 completed: Maybe
    at com.sun.corba.se.impl.logging.ORBUtilSystemException.couldNotFindClass(ORBUtilSystemException.java:8260)
    at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1013)
    at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:879)
    at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_abstract_interface(CDRInputStream_1_0.java:873)
    at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_abstract_interface(CDRInputStream_1_0.java:863)
    at com.sun.corba.se.impl.encoding.CDRInputStream.read_abstract_interface(CDRInputStream.java:269)
    at com.sun.corba.se.impl.util.Utility.readAbstractAndNarrow(Utility.java:948)
    at com.sun.corba.se.impl.io.IIOPInputStream.inputObjectField(IIOPInputStream.java:1992)
    at com.sun.corba.se.impl.io.IIOPInputStream.inputClassFields(IIOPInputStream.java:2220)
    at com.sun.corba.se.impl.io.IIOPInputStream.inputObject(IIOPInputStream.java:1227)
    at com.sun.corba.se.impl.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:400)
    at com.sun.corba.se.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:317)
    at com.sun.corba.se.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:283)
    at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1034)
    at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:879)
    at com.sun.corba.se.impl.encoding.CDRInputStream.read_value(CDRInputStream.java:249)
    at com.sun.corba.se.impl.corba.TCUtility.unmarshalIn(TCUtility.java:269)
    at com.sun.corba.se.impl.corba.AnyImpl.read_value(AnyImpl.java:559)
    at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_any(CDRInputStream_1_0.java:739)
    at com.sun.corba.se.impl.encoding.CDRInputStream.read_any(CDRInputStream.java:220)
    at weblogic.corba.cos.naming._NamingContextAnyStub.resolve_any(_NamingContextAnyStub.java:81)
    at weblogic.corba.j2ee.naming.ContextImpl.lookup(ContextImpl.java:267)
    ... 5 more
Caused by: java.lang.ClassNotFoundException
    ... 26 more
  

Комментарии:

1. 1 по этому вопросу. У меня такая же ошибка.

2. Франц См.: В итоге я упаковал весь api и impl в jar и развернул для вызывающего. Так не должно быть, но, похоже, сработало.

Ответ №1:

Это vmcid: SUN minor code: 257 completed: Maybe заставляет меня думать, что это несовместимость версий, то есть клиентский код и заглушки rmi отличаются от версии ejb-кода сервера.

Ответ №2:

Вам нужно wlfullclient.jar , как указано в документации

До WebLogic Server 10.0 weblogic.jar файл требовался для клиентских приложений T3 и WLS-IIOP для предоставления дополнительных функций, специфичных для WebLogic Server. Для WebLogic Server 10.x и более поздних версий автономные клиентские приложения, требующие этих функций, используют wlfullclient.jar файл вместо weblogic.jar […]

Вы можете сгенерировать wlfullclient.jar файл для клиентских приложений с помощью инструмента JarBuilder. […]

Примечание: продолжение использования weblogic.jar в клиентских приложениях может привести ClassNotFoundException к.

Ответ №3:

Этот комментарий предназначен для разработчиков, которые столкнулись с ошибкой: vmcid: SUN minor code: 2xx с weblogic 12c

Я взял эти заметки из (https://www.ibm.com/support/knowledgecenter/en/SS4QMC_9.5.0/com.ibm.help.install.cpqpostinstallation.doc/installation/t_SettingUpRuntimeUtilitiesOnOracleWebLogic.html)

Если вы используете WebLogic 12.1.3 (или более позднюю версию) и JDK 1.7, установите wlthint3client.jar файл вместо wlfullclient.jar . Если вы используете WebLogic 12.1.3 (или более позднюю версию) и JDK 1.8, установите wljmsclient.jar файл и wlclient.jar файл, а не wlfullclient.jar .

Jar, который вы должны использовать, зависит от используемой вами Java. В моем случае wlclient.jar не сработало, и я получил vmcid: SUN minor code: 211, поэтому я изменил wlthint3client.jar использование java 8 с Oracle WebLogic Server 12.2.1.3, и теперь это сработало для меня.