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