4

JBoss5 で 2 つのアプリを実行しています。

それらは互いにデータを送信します。Serializableを変更せずに、クラスの 1 つにフィールドを追加しましたserialVersionUIDこのクラスは、 Java シリアライゼーション ルールに従って下位互換性があります。

私が直面している問題は、あるアプリから別のアプリに EJB 呼び出しを介して送信しようとするたびに、JBoss が IOException をスローすることです。

java.io.IOException: Current classpath has lesser fields on com.myproject.MyEntity than its original version
    org.jboss.serial.classmetamodel.StreamingClass.readStream(StreamingClass.java:98)
    org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.readObjectDescriptionFromStreaming(ObjectDescriptorFactory.java:381)
    org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.objectFromDescription(ObjectDescriptorFactory.java:82)
    org.jboss.serial.objectmetamodel.DataContainer$DataContainerInput.readObject(DataContainer.java:845)
    org.jboss.serial.io.MarshalledObjectForLocalCalls.get(MarshalledObjectForLocalCalls.java:60)
    org.jboss.ejb3.remoting.IsLocalInterceptor.invokeLocal(IsLocalInterceptor.java:101)
    org.jboss.ejb3.remoting.IsLocalInterceptor.invoke(IsLocalInterceptor.java:72)
    org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
    org.jboss.aspects.remoting.PojiProxy.invoke(PojiProxy.java:62)
    com.sun.proxy.$Proxy881.invoke(Unknown Source)
    org.jboss.ejb3.proxy.impl.handler.session.SessionProxyInvocationHandlerBase.invoke(SessionProxyInvocationHandlerBase.java:207)
    org.jboss.ejb3.proxy.impl.handler.session.SessionProxyInvocationHandlerBase.invoke(SessionProxyInvocationHandlerBase.java:164)
    com.sun.proxy.$Proxy1063.getAlertScheduleForTrip(Unknown Source)
    com.myclient.ejb.MyEntityLoadingBean.loadMyEntities(MyEntityLoadingBean.java:256)
    ...

JBoss にシリアライゼーション モジュールの使用を避け、代わりに標準の Java シリアライゼーションを使用するように指示する方法はありますか? このバグは既知であり、JBoss JIRA では数年前から知られているようです: https://issues.jboss.org/browse/JBSER-120

JBoss を起動しようとしまし-Dserialization.jboss=falseたが、うまくいきませんでした (JBoss Cache でのみ動作すると思います)。

4

0 に答える 0