每当我尝试从客户端调用我的ejb时,我都会收到此错误:
java.rmi.MarshalException: Failed to communicate.
Problem during marshalling/unmarshalling; nested exception is:
java.io.InvalidClassException: com.afrikbrain.util.message.MessageInfo;
local class incompatible:
stream classdesc serialVersionUID = 2285009932770474121,
local class serialVersionUID = -2900394430145132451 at
org.jboss.remoting.transport.socket.SocketClientInvoker.handleException(SocketClientInvoker
.java:122)
为什么会发生?以及如何解决它?
答案 0 :(得分:3)
本地类和远程类是不同的版本。在解组过程中,接收方不支持发送方的协议版本。确保服务器上的已编译类与客户端上已编译类的版本相同,因此可以顺序化/反序列化而不会出现问题。 我建议你从零重建所有项目并重新部署它们,并重新生成存根。
答案 1 :(得分:1)
您的服务器看起来与客户端的对象版本不同。确保它们都使用com.afrikbrain.util.message.MessageInfo
对象的相同代码。