在WebLogic 11g中使用远程EJB时出现ClassNotFoundException

时间:2011-10-14 13:32:18

标签: java ejb weblogic

我发誓我以前做过这件事,只是不确定我忘了什么。从Java SE客户端使用远程EJB与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

3 个答案:

答案 0 :(得分:0)

vmcid: SUN minor code: 257 completed: Maybe让我觉得它的版本不兼容 - 也就是说,客户端代码和rmi存根是与服务器ejb代码不同的版本。

答案 1 :(得分:0)

您需要documentation

中所述的wlfullclient.jar
  

在WebLogic Server 10.0之前,T3和WLS-IIOP客户端应用程序需要weblogic.jar文件来提供特定于WebLogic Server的增值功能。对于WebLogic Server 10.x及更高版本,需要这些功能的独立客户端应用程序使用wlfullclient.jar文件而不是weblogic.jar [...]

     

您可以使用JarBuilder工具为客户端应用程序生成wlfullclient.jar文件。 [...]

     

注意:在客户端应用程序中继续使用weblogic.jar可能会产生ClassNotFoundException

答案 2 :(得分:0)

此注释适用于面临错误的开发人员:vmcid:SUN次要代码: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次要代码:211 ,因此我使用wlthint3client.jar并在Java Web 8和Oracle WebLogic Server 12.2.1.3中进行了更改,现在对我有效