1

現在、ポートレット プラグインで struts2 を使用してクラスター化された環境内に jsr 168 ポートレットを実装する際に問題が発生しています。モデル駆動型インターフェイスを使用してフォームを送信するたびに、以下のスタック トレースを受け取ります。

   SEVERE: Unable to serialize delta request for sessionid [0F246549355FD6749A5CF6EAE761F77F.worker1]
java.io.NotSerializableException: com.opensymphony.xwork2.inject.ContainerImpl$ConstructorInjector
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1164)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:330)
    at com.opensymphony.xwork2.inject.util.ReferenceMap.writeObject(ReferenceMap.java:595)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1469)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158)
    at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518)
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158)
    at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518)
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:330)
    at java.util.ArrayList.writeObject(ArrayList.java:570)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1469)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158)
    at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518)
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:330)
    at org.apache.catalina.ha.session.DeltaRequest$AttributeInfo.writeExternal(DeltaRequest.java:389)
    at org.apache.catalina.ha.session.DeltaRequest.writeExternal(DeltaRequest.java:287)
    at org.apache.catalina.ha.session.DeltaRequest.serialize(DeltaRequest.java:302)
    at org.apache.catalina.ha.session.DeltaManager.serializeDeltaRequest(DeltaManager.java:725)
    at org.apache.catalina.ha.session.DeltaManager.requestCompleted(DeltaManager.java:1233)
    at org.apache.catalina.ha.session.DeltaManager.requestCompleted(DeltaManager.java:1198)
    at org.apache.catalina.ha.tcp.ReplicationValve.send(ReplicationValve.java:550)
    at org.apache.catalina.ha.tcp.ReplicationValve.sendMessage(ReplicationValve.java:537)
    at org.apache.catalina.ha.tcp.ReplicationValve.sendCrossContextSession(ReplicationValve.java:457)
    at org.apache.catalina.ha.tcp.ReplicationValve.sendReplicationMessage(ReplicationValve.java:432)
    at org.apache.catalina.ha.tcp.ReplicationValve.invoke(ReplicationValve.java:363)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:291)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Thread.java:662)

問題を再現するサンプル プログラム git://github.com/ctwomey1/Struts2PortletExample.git

この問題は、pluto 1.1.7 を実行している tomcat 6.0.33 で再現しました。ストラット2.1.3.2および2.3.3でこれを試しました

誰かが私が間違っていることを見たら、私は提案が大好きです:)

更新: struts2 ポートレット プラグインの問題としてこれを記録しました。私は定期的に解決策に取り組んでいます

4

1 に答える 1

0

残念ながら、これは Struts 2 の既知のバグのようです。バグを再現するには、List をパラメーターとして持つ Struts アクションが必要です。その後、このリストをシリアライズしようとすると、このスタック トレースを受け取ります (シリアライズ可能でないため)。完全なバグ レポートは次の場所にあります。

https://issues.apache.org/jira/browse/WW-3414

于 2012-07-23T16:03:39.647 に答える