I think you can fix this problem by making your class serializable.

And it is not strange if this happens in WebLogic but not in Tomcat.

According to the Exception Stack, I guess the cause of this Exception is:
(1)You putted some object into the session.
(2)You are trying to retrieve it from the session lately.
(3)weblogic.servlet.internal.session.SessionData.getAttribute is
called, and it calls:
(4)weblogic.common.internal.PassivationUtils.copy method,
and it calls:
(5)weblogic.common.internal.PassivationUtils.toByteArray,
and it calls:
(6)java.io.ObjectOutputStream.writeObject method.
It try to write your object into a stream, but your object is not
serializable. So the exception is thrown.


This looks like happening under the implement code of Session
management of WebLogic.
Tomcat don't thrown this Exception, maybe because when it get object
from the session, it don't try to make a copy.


But, In my  opinion, putting an unserializable object into the session
could cause a potential problem, because sometimes the session data
need to be dumped into hard disk file, or to be transferred between
app servers. If your object is not Serializable, these operation will
fail.


2010/11/17 Struts Newbie <stefaan.som...@gmail.com>:
>
> We have a portlet running within the Liferay-container on WebLogic, that is
> giving the stacktrace hereunder :
> The strange thing is the fact that this application is working without any
> problem within the Tomcat-container.
>
> StackTrace :
> java.io.NotSerializableException:
> org.apache.struts2.portlet.PortletRequestMap
> at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1156)
> at
> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1509)
> at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1474)
> at
> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
> at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
> at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
> at java.util.ArrayList.writeObject(ArrayList.java:570)
> at sun.reflect.GeneratedMethodAccessor37.invoke(Unknown Source)
> 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:1461)
> at
> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
> at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
> at
> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1509)
> at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1474)
> at
> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
> at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
> at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
> at
> weblogic.common.internal.PassivationUtils.toByteArray(PassivationUtils.java:33)
> at
> weblogic.common.internal.PassivationUtils.toByteArray(PassivationUtils.java:24)
> at weblogic.common.internal.PassivationUtils.copy(PassivationUtils.java:64)
> at
> weblogic.servlet.internal.AttributeWrapper.getObject(AttributeWrapper.java:89)
> at
> weblogic.servlet.internal.AttributeWrapper.getObject(AttributeWrapper.java:39)
> at
> weblogic.servlet.internal.session.SessionData.getAttribute(SessionData.java:805)
> at
> com.liferay.util.servlet.SharedSessionWrapper.getAttribute(SharedSessionWrapper.java:67)
> at
> com.liferay.portlet.PortletSessionImpl.getAttribute(PortletSessionImpl.java:110)
> at
> com.liferay.portlet.PortletSessionImpl.getAttribute(PortletSessionImpl.java:97)
> at
> com.liferay.portlet.PortletSessionImpl.getAttributeMap(PortletSessionImpl.java:129)
> at
> com.liferay.portlet.PortletSessionImpl.getAttributeMap(PortletSessionImpl.java:118)
> at
> com.liferay.portal.servlet.taglib.portlet.DefineObjectsTagUtil.doStartTag(DefineObjectsTagUtil.java:93)
> at sun.reflect.GeneratedMethodAccessor396.invoke(Unknown Source)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at
> com.liferay.portal.kernel.util.MethodInvoker.invoke(MethodInvoker.java:81)
> at
> com.liferay.portal.kernel.util.MethodInvoker.invoke(MethodInvoker.java:51)
> at
> com.liferay.taglib.portlet.DefineObjectsTag.doStartTag(DefineObjectsTag.java:51)
> at
> jsp_servlet._html._common._themes.__portlet._jspService(__portlet.java:771)
> at weblogic.servlet.jsp.JspBase.service(JspBase.java:34)
> at
> weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
> at
> weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
> at
> weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:292)
> at
> weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:175)
> at
> weblogic.servlet.internal.RequestDispatcherImpl.invokeServlet(RequestDispatcherImpl.java:499)
> at
> weblogic.servlet.internal.RequestDispatcherImpl.include(RequestDispatcherImpl.java:429)
> at weblogic.servlet.jsp.PageContextImpl.include(PageContextImpl.java:163)
> at org.apache.struts.tiles.TilesUtilImpl.doInclude(TilesUtilImpl.java:99)
> at org.apache.struts.tiles.TilesUtil.doInclude(TilesUtil.java:135)
> at org.apache.struts.taglib.tiles.InsertTag.doInclude(InsertTag.java:760)
> at
> org.apache.struts.taglib.tiles.InsertTag$InsertHandler.doEndTag(InsertTag.java:892)
> at org.apache.struts.taglib.tiles.InsertTag.doEndTag(InsertTag.java:462)
> at
> jsp_servlet._html._portal.__render_portlet._jspService(__render_portlet.java:1984)
> at weblogic.servlet.jsp.JspBase.service(JspBase.java:34)
> at
> weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
> at
> weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
> at
> weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:292)
> at
> weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:175)
> at
> weblogic.servlet.internal.RequestDispatcherImpl.invokeServlet(RequestDispatcherImpl.java:499)
> at
> weblogic.servlet.internal.RequestDispatcherImpl.include(RequestDispatcherImpl.java:429)
> at com.liferay.portal.util.PortalImpl.renderPortlet(PortalImpl.java:3170)
> at com.liferay.portal.util.PortalUtil.renderPortlet(PortalUtil.java:1042)
> at
> com.liferay.portlet.layoutconfiguration.util.RuntimePortletUtil.processPortlet(RuntimePortletUtil.java:169)
> at
> com.liferay.portlet.layoutconfiguration.util.RuntimePortletUtil.processPortlet(RuntimePortletUtil.java:102)
> at
> com.liferay.portlet.layoutconfiguration.util.RuntimePortletUtil.processTemplate(RuntimePortletUtil.java:280)
> at
> com.liferay.portlet.layoutconfiguration.util.RuntimePortletUtil.processTemplate(RuntimePortletUtil.java:189)
> at
> jsp_servlet._html._portal._layout._view.__portlet._jspService(__portlet.java:837)
> at weblogic.servlet.jsp.JspBase.service(JspBase.java:34)
> at
> weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
> at
> weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
> at
> weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:292)
> at
> weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:175)
> at
> weblogic.servlet.internal.RequestDispatcherImpl.invokeServlet(RequestDispatcherImpl.java:499)
> at
> weblogic.servlet.internal.RequestDispatcherImpl.include(RequestDispatcherImpl.java:429)
> at
> com.liferay.portal.action.LayoutAction.includeLayoutContent(LayoutAction.java:318)
> at
> com.liferay.portal.action.LayoutAction.processLayout(LayoutAction.java:519)
> at com.liferay.portal.action.LayoutAction.execute(LayoutAction.java:196)
> at
> org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
> at
> org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
> at
> com.liferay.portal.struts.PortalRequestProcessor.process(PortalRequestProcessor.java:159)
> at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
> at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
> at
> com.liferay.portal.servlet.MainServlet.callParentService(MainServlet.java:622)
> at com.liferay.portal.servlet.MainServlet.service(MainServlet.java:860)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
> at
> weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
> at
> weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
> at
> weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:292)
> at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
> at
> weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
> at
> com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:185)
> at
> com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:115)
> at
> weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
> at
> com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:185)
> at
> com.liferay.portal.servlet.filters.strip.StripFilter.processFilter(StripFilter.java:181)
> at
> com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:112)
> at
> weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
> at
> com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:185)
> at
> com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:115)
> at
> weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
> at
> com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:185)
> at
> com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:115)
> at
> weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
> at
> com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:185)
> at
> com.liferay.portal.servlet.filters.secure.SecureFilter.processFilter(SecureFilter.java:213)
> at
> com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:112)
> at
> weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
> at
> weblogic.servlet.internal.RequestDispatcherImpl.invokeServlet(RequestDispatcherImpl.java:500)
> at
> weblogic.servlet.internal.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:248)
> at
> com.liferay.portal.servlet.FriendlyURLServlet.service(FriendlyURLServlet.java:142)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
> at
> weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
> at
> weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
> at
> weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:292)
> at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
> at
> weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
> at
> com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:185)
> at
> com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:115)
> at
> weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
> at
> com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:185)
> at
> com.liferay.portal.servlet.filters.etag.ETagFilter.processFilter(ETagFilter.java:50)
> at
> com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:112)
> at
> weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
> at
> com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:185)
> at
> com.liferay.portal.servlet.filters.strip.StripFilter.processFilter(StripFilter.java:141)
> at
> com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:112)
> at
> weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
> at
> com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:185)
> at
> com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:115)
> at
> weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
> at
> com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:185)
> at
> com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:115)
> at
> weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
> at
> com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:185)
> at
> com.liferay.portal.servlet.filters.secure.SecureFilter.processFilter(SecureFilter.java:213)
> at
> com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:112)
> at
> weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
> at
> com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:185)
> at
> com.liferay.portal.servlet.filters.i18n.I18nFilter.processFilter(I18nFilter.java:232)
> at
> com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:112)
> at
> weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
> at
> com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:185)
> at
> com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:115)
> at
> weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
> at
> com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:185)
> at
> com.liferay.portal.servlet.filters.cache.CacheFilter.processFilter(CacheFilter.java:459)
> at
> com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:112)
> at
> weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
> at
> com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:185)
> at
> com.liferay.portal.servlet.filters.autologin.AutoLoginFilter.processFilter(AutoLoginFilter.java:262)
> at
> com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:112)
> at
> weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
> at
> com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:185)
> at
> com.liferay.portal.servlet.filters.sso.opensso.OpenSSOFilter.processFilter(OpenSSOFilter.java:72)
> at
> com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:112)
> at
> weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
> at
> com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:185)
> at
> com.liferay.portal.servlet.filters.sso.ntlm.NtlmPostFilter.processFilter(NtlmPostFilter.java:91)
> at
> com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:112)
> at
> weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
> at
> com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:185)
> at
> com.liferay.portal.sharepoint.SharepointFilter.processFilter(SharepointFilter.java:191)
> at
> com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:112)
> at
> weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
> at
> com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:185)
> at
> com.liferay.portal.servlet.filters.virtualhost.VirtualHostFilter.processFilter(VirtualHostFilter.java:229)
> at
> com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:112)
> at
> weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
> at
> com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:185)
> at
> com.liferay.portal.servlet.filters.threadlocalcache.ThreadLocalCacheFilter.processFilter(ThreadLocalCacheFilter.java:51)
> at
> com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:112)
> at
> weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
> at
> com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:185)
> at
> com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:115)
> at
> weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
> at
> com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:185)
> at
> com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:115)
> at
> weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
> at
> org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:738)
> at
> weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
> at
> weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3592)
> at
> weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
> at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
> at
> weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2202)
> at
> weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2108)
> at
> weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1432)
> at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
> at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
> --
> View this message in context: 
> http://old.nabble.com/Framework-%3A-Liferay-Struts-2-on-WebLogic-%3A-java.io.NotSerializableException%3A-org.apache.struts2.portlet.PortletRequestMap-tp30238148p30238148.html
> Sent from the Struts - Dev mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@struts.apache.org
> For additional commands, e-mail: dev-h...@struts.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@struts.apache.org
For additional commands, e-mail: dev-h...@struts.apache.org

Reply via email to