java.rmi.MarshalException
Всякий раз, когда я пытаюсь вызвать мой 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)
почему это происходит? и как это решить?
2 ответа
Решение
Локальный класс и удаленный класс являются разными версиями. Во время процесса демаршаллинга получатель не поддерживает версию протокола отправителя. Убедитесь, что скомпилированный класс на сервере является той же версией скомпилированного класса на клиенте, чтобы его можно было сериализовать / десериализовать без проблем. Я предлагаю вам восстановить с нуля весь проект и заново развернуть его, а также восстановить заглушки.
Похоже, ваш сервер имеет другую версию объекта, чем ваш клиент. Убедитесь, что они оба используют один и тот же код для com.afrikbrain.util.message.MessageInfo
объект.