Struts2 Portlet NotSerializable异常 [英] Struts2 portlet NotSerializable exception

查看:122
本文介绍了Struts2 Portlet NotSerializable异常的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我目前在使用带有portlet插件的struts2在集群环境中实现jsr 168 portlet时遇到问题.每当我使用模型驱动的界面并提交表单时,我都会收到以下堆栈跟踪:

I'm currently experiencing problems implementing jsr 168 portlets inside of a clustered environment using struts2 with the portlet plugin. Whenever i use the model driven interface and submit the form i recieve the below stack trace:

   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

Sample program to replicate the problem git://github.com/ctwomey1/Struts2PortletExample.git

我已在运行pluto 1.1.7的tomcat 6.0.33中复制了此问题.我已经在Struts 2.1.3.2和2.3.3上进行过尝试

I have replicated this issue in tomcat 6.0.33 running pluto 1.1.7. I have tried this on struts 2.1.3.2 and 2.3.3

如果有人看到我在做错事情,我会建议:)

If anyone see's what i'm doing wrong i would love suggestions :)

更新:我已将其记录为struts2 portlet插件的问题.我正在定期研究解决方案

UPDATE: I have logged this as an issue with the struts2 portlet plugin. I'm periodically working on a solution

推荐答案

不幸的是,这看起来像Struts 2中的一个已知错误.要重现该错误,您需要一个带有List作为参数的Struts操作,然后您会收到此消息.当您尝试序列化此列表时(因为它不可序列化),将显示堆栈跟踪.完整的错误报告可以在这里找到:

Unfortunately, this looks like a known bug in Struts 2. To reproduce the bug, you need a Struts action with a List as a parameter and then you receive this stack trace when you try to serialize this list (since it is not serializable). The full bug report can be found here:

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

这篇关于Struts2 Portlet NotSerializable异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆