Ошибки с десериализацией в RMI
Коллеги,
не встречались ли вам на практике подобные исключения при вызове удаленных методов посредством стандартного RMI(JRMP):
Случаются эпизодически (1 на 50000 вызовов) в нескольких местах системы на разных типах объектов.
Поля объекта могут быть разными как объявленные в самом объекте, так и например поле size внутри поля типа ArrayList.
Поля всегда примитивных типов int или long.
В тех местах где можно вызвать метод повторно, повторный вызов проходит успешно.
В классах где вылетает эксепшн serialVersionUID может как присутствовать, так и нет.
Работает несколько инстансов системы в разных конфигурациях, ошибка проявляется только на одном инстансе. Используем JDK 1.6/64bit.
Подкиньте идей в какую сторону смотреть!
не встречались ли вам на практике подобные исключения при вызове удаленных методов посредством стандартного RMI(JRMP):
java.io.InvalidClassException: Status; incompatible types for field committed
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:173)
at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:178)
at java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:132)
at $Proxy14.getStatistics(Unknown Source)
at Server.run(Server.java:1003)
Caused by: java.io.InvalidClassException: Status; incompatible types for field committed
at java.io.ObjectStreamClass.matchFields(ObjectStreamClass.java:2210)
at java.io.ObjectStreamClass.getReflector(ObjectStreamClass.java:2105)
at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:602)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1582)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1495)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1582)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1495)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1582)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1495)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1582)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1495)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1582)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1495)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1731)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350)
at sun.rmi.server.UnicastRef.unmarshalValue(UnicastRef.java:306)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:155)
... 4 more
Случаются эпизодически (1 на 50000 вызовов) в нескольких местах системы на разных типах объектов.
Поля объекта могут быть разными как объявленные в самом объекте, так и например поле size внутри поля типа ArrayList.
Поля всегда примитивных типов int или long.
В тех местах где можно вызвать метод повторно, повторный вызов проходит успешно.
В классах где вылетает эксепшн serialVersionUID может как присутствовать, так и нет.
Работает несколько инстансов системы в разных конфигурациях, ошибка проявляется только на одном инстансе. Используем JDK 1.6/64bit.
Подкиньте идей в какую сторону смотреть!
