2009-10-16 17 views
0

每當我試圖從客戶端調用我的EJB,我得到這個錯誤:java.rmi.MarshalException

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) 

爲什麼會出現?以及如何解決它?

回答

3

本地類和遠程類是不同的版本。在解組過程中,接收方不支持發送方的協議版本。確保服務器上的編譯類與客戶端上已編譯類的版本相同,因此可以順序化或反序列化而不會出現問題。 我建議你從零開始重建所有項目並重新部署它們,並重新生成存根。

1

看起來像你的服務器有不同版本的對象,您的客戶。確保它們都使用與com.afrikbrain.util.message.MessageInfo對象相同的代碼。

相關問題