我有一个存在于Weblogic 10.3中的EJB。我们将其移至12c并修改了构建以使用maven-plugin来创建EJB客户端和EJB(2个独立的构建)。
有一个Java应用程序需要通过远程接口调用EJB。在这样做时,有两种方法会产生以下错误(其余方法工作正常):
java.rmi.UnmarshalException: Method identifier [29] out of range
at weblogic.rjvm.BasicOutboundRequest.sendReceive(BasicOutboundRequest.java:108)
at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:290)
at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:248)
at net.footware.shoeManager.ShoeManager_xwmvzk_EOImpl_1211_WLStub.updateShoeStatus(Unknown Source)
另一种方法给出了相同的错误,但编号不同:
java.rmi.UnmarshalException: Method identifier [28] out of range
值得注意的是,客户端jar和EJB jar是在2个不同的pom.xml文件中构建的。构建客户端的pom.xml显式排除了某些类,而构建EJB jar的pom.xml却没有。
这不是简单地错过了方法,因为它会发回“Method Not Found”错误。我还简化了返回true的方法(没有其他逻辑)。看来呼叫永远不会到达远程方法中的代码。还有其他方法可以获取并返回相同的对象,并且不会抛出错误。
当我创建一个接受布尔值的新方法时,我收到了这个错误:
Caused by: java.io.StreamCorruptedException: invalid type code: 04
知道什么可能导致这些错误吗?