从Weblogic 9调用部署在Weblogic 12中的远程EJB时出错



我有一个基于EJB 2.1的应用程序,部署在Weblogic 9.2(Java 5)中,调用部署在Weblogic 12(Java 7)中的远程EJB 3。我已经将wlfullclient.jar添加到类路径中,它抛出以下异常:

Caused by: java.lang.NoSuchMethodError: weblogic.kernel.KernelStatus.isThinIIOPClient()Z
    at weblogic.ejb.container.internal.RemoteBusinessIntfProxy.readObject(RemoteBusinessIntfProxy.java:185)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:946)
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1809)
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1908)
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1832)
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:348)
    at weblogic.utils.io.ChunkedObjectInputStream.readObject(ChunkedObjectInputStream.java:195)
    at weblogic.rjvm.MsgAbbrevInputStream.readObject(MsgAbbrevInputStream.java:565)
    at weblogic.utils.io.ChunkedObjectInputStream.readObject(ChunkedObjectInputStream.java:191)
    at weblogic.rmi.internal.ObjectIO.readObject(ObjectIO.java:62)
    at weblogic.rjvm.ResponseImpl.unmarshalReturn(ResponseImpl.java:221)
    at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:338)
    at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:252)
    at weblogic.jndi.internal.ServerNamingNode_923_WLStub.lookup(Unknown Source)
    at weblogic.jndi.internal.WLContextImpl.lookup(WLContextImpl.java:379)
    at weblogic.jndi.internal.WLContextImpl.lookup(WLContextImpl.java:367)
    at javax.naming.InitialContext.lookup(InitialContext.java:351)

weblogic.kernel.KernelStatus存在于wlfullclient.jar中,它有isThinIIOPClient方法,但类也存在于weblogic.jar中,它没有该方法。我尝试过wlthint3client.jar,但也出现了同样的错误。

有人能帮我想出解决这个问题的办法吗?

我认为这个问题可以通过在2个或多个jar中删除同一个类来解决,或者将错误的wlfullclient.jar放入项目中。你应该试着把那个罐子从你的图书馆里拿出来。

Pierluigi Vernetto 的评论解决了这个问题

"weblogic.kernel.KernelStatus在许多JAR文件中,如$MIDDLEWARE_HOME/modules/com.bea.core.weblogic.workmanager_1.9.0.0.JAR、wlclient.JAR等。

很可能在类路径中,您选择了错误的

把一套好罐子放在一起是一件令人沮丧的事。。。不要放弃。。。请记住,官方没有办法对扫描给定类的JAR的顺序进行排序,所以如果你在两个罐子里有相同的类,你就是""

最新更新