ICEfaces-EE
  1. ICEfaces-EE
  2. IPCK-100

tabView - Non-serializable attribute exception

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 1.8.2.GA_P01
    • Fix Version/s: 1.8.2.GA_P02
    • Component/s: Facelet Components
    • Labels:
      None
    • Environment:
      Clustered environments
    • Affects:
      Compatibility/Configuration

      Description

      The tabView component throws the following exception when deployed in a clustered environment:

      SEVERE: Servlet.service() for servlet Persistent Faces Servlet threw exception
      java.lang.IllegalArgumentException: setAttribute: Non-serializable attribute
              at org.apache.catalina.session.StandardSession.setAttribute(StandardSession.java:1295)
              at org.apache.catalina.session.StandardSession.setAttribute(StandardSession.java:1256)
              at org.apache.catalina.session.StandardSessionFacade.setAttribute(StandardSessionFacade.java:130)
              at com.icesoft.faces.webapp.http.servlet.ProxyHttpSession.setAttribute(ProxyHttpSession.java:139)
              at com.icesoft.faces.webapp.http.servlet.ServletSessionAttributeMap.setAttribute(ServletSessionAttributeMap.java:52)
              at com.icesoft.faces.context.AbstractAttributeMap.put(AbstractAttributeMap.java:156)
              at com.sun.faces.mgbean.BeanManager$ScopeManager$SessionScopeHandler.handle(BeanManager.java:442)
              at com.sun.faces.mgbean.BeanManager$ScopeManager.pushToScope(BeanManager.java:417)
              at com.sun.faces.mgbean.BeanManager.createAndPush(BeanManager.java:369)
              at com.sun.faces.mgbean.BeanManager.create(BeanManager.java:222)
              at com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:86)
              at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:54)
              at com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:72)
              at org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:61)
              at org.apache.el.parser.AstValue.getValue(AstValue.java:107)
              at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
              at com.sun.facelets.el.TagValueExpression.getValue(TagValueExpression.java:71)
              at com.sun.facelets.el.LegacyValueBinding.getValue(LegacyValueBinding.java:56)
              at com.icesoft.faces.component.UIXhtmlComponent.getTagAttributes(UIXhtmlComponent.java:103)
              at com.icesoft.faces.renderkit.dom_html_basic.XMLRenderer.encodeBegin(XMLRenderer.java:52)
              at javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:813)
              at com.icesoft.faces.application.D2DViewHandler.renderResponse(D2DViewHandler.java:490)
              at com.icesoft.faces.application.D2DViewHandler.renderResponse(D2DViewHandler.java:498)
              at com.icesoft.faces.application.D2DViewHandler.renderResponse(D2DViewHandler.java:498)
              at com.icesoft.faces.application.D2DViewHandler.renderResponse(D2DViewHandler.java:498)
              at com.icesoft.faces.application.D2DViewHandler.renderResponse(D2DViewHandler.java:498)
              at com.icesoft.faces.application.D2DViewHandler.renderResponse(D2DViewHandler.java:498)
              at com.icesoft.faces.facelets.D2DFaceletViewHandler.renderResponse(D2DFaceletViewHandler.java:281)
              at com.icesoft.faces.application.D2DViewHandler.renderView(D2DViewHandler.java:158)
              at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:110)
              at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
              at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
              at com.icesoft.faces.webapp.http.core.JsfLifecycleExecutor.apply(JsfLifecycleExecutor.java:51)
              at com.icesoft.faces.context.View$2$1.respond(View.java:80)
              at com.icesoft.faces.webapp.http.servlet.ServletRequestResponse.respondWith(ServletRequestResponse.java:233)
              at com.icesoft.faces.context.View$2.serve(View.java:114)
              at com.icesoft.faces.context.View.servePage(View.java:186)
              at com.icesoft.faces.webapp.http.core.SingleViewServer.service(SingleViewServer.java:84)
              at com.icesoft.faces.webapp.http.common.ServerProxy.service(ServerProxy.java:43)
              at com.icesoft.faces.webapp.http.servlet.MainSessionBoundServlet$4.service(MainSessionBoundServlet.java:181)
              at com.icesoft.faces.webapp.http.common.standard.PathDispatcherServer.service(PathDispatcherServer.java:55)
              at com.icesoft.faces.webapp.http.servlet.BasicAdaptingServlet.service(BasicAdaptingServlet.java:48)
              at com.icesoft.faces.webapp.http.servlet.PathDispatcher.service(PathDispatcher.java:55)
              at com.icesoft.faces.webapp.http.servlet.SessionDispatcher.service(SessionDispatcher.java:92)
              at com.icesoft.faces.webapp.http.servlet.PathDispatcher.service(PathDispatcher.java:55)
              at com.icesoft.faces.webapp.http.servlet.MainServlet.service(MainServlet.java:183)
              at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
              at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
              at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
              at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
              at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
              at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
              at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
              at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
              at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
              at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
              at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
              at java.lang.Thread.run(Thread.java:619)

      To reproduce this in a non-clustered environment I added the <distributable/> tag to my applications web.xml and ran it on Tomcat with session persistence turned on (default).

        Activity

        Arran Mccullough created issue -
        Arran Mccullough made changes -
        Field Original Value New Value
        Salesforce Case [5007000000C47Dx]
        Hide
        Arran Mccullough added a comment -

        Attached test case project files. I can provide a built war file but it is too large to attach.

        Show
        Arran Mccullough added a comment - Attached test case project files. I can provide a built war file but it is too large to attach.
        Arran Mccullough made changes -
        Attachment Case9224Example.zip [ 12414 ]
        Ken Fyten made changes -
        Fix Version/s 1.8.2.GA_P02 [ 10225 ]
        Affects [Compatibility/Configuration]
        Assignee Priority P1
        Assignee Brad Kroeger [ brad.kroeger ] Greg Dick [ greg.dick ]
        Ken Fyten made changes -
        Assignee Greg Dick [ greg.dick ] Brad Kroeger [ brad.kroeger ]
        Hide
        Greg Dick added a comment -

        In general this is caused by having a session scoped bean that doesn't implement Serializable. Normally, this is in a bean in the application. In this case however, it may be something different. There is this from the salesforce case:

        e have a problem with Layout Components -> Tab View component
        We have Liferay 5.2 SP4 EE and are trying to use Tab View in one of our portlet. When we put this portlet to cluster enviroment (liferay cluster) we get error. All other component seems to work.

        Exception itself:
        Caused by: javax.el.ELException: /file:/home/dev/liferay-portal-5.2-ee-sp3/tomcat-6.0.18/temp/10-user-rights/WEB-INF/lib/icefaces-composite-comps-1.8.2.jar!/META-INF/facelet/tabView/tabView.xhtml: setAttribute: Non-serializable attribute
        at com.sun.facelets.compiler.TextInstruction.write(TextInstruction.java:50)
        at com.sun.facelets.compiler.UIInstructions.encodeBegin(UIInstructions.java:39)
        at com.icesoft.faces.renderkit.dom_html_basic.DomBasicRenderer.encodeParentAndChildren(DomBasicRenderer.java:356)
        at com.icesoft.faces.renderkit.dom_html_basic.DomBasicRenderer.encodeParentAndChildren(DomBasicRenderer.java:365)
        at com.icesoft.faces.renderkit.dom_html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:96)
        at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:837)
        at com.icesoft.faces.renderkit.dom_html_basic.DomBasi

        And this seems to indicate that there is something that the TextInstruction is encountering that is not serializable to the response. A TextInstruction object is a facelets object that handles writing literal text to the responsewriter.

        Show
        Greg Dick added a comment - In general this is caused by having a session scoped bean that doesn't implement Serializable. Normally, this is in a bean in the application. In this case however, it may be something different. There is this from the salesforce case: e have a problem with Layout Components -> Tab View component We have Liferay 5.2 SP4 EE and are trying to use Tab View in one of our portlet. When we put this portlet to cluster enviroment (liferay cluster) we get error. All other component seems to work. Exception itself: Caused by: javax.el.ELException: / file:/home/dev/liferay-portal-5.2-ee-sp3/tomcat-6.0.18/temp/10-user-rights/WEB-INF/lib/icefaces-composite-comps-1.8.2.jar!/META-INF/facelet/tabView/tabView.xhtml: setAttribute: Non-serializable attribute at com.sun.facelets.compiler.TextInstruction.write(TextInstruction.java:50) at com.sun.facelets.compiler.UIInstructions.encodeBegin(UIInstructions.java:39) at com.icesoft.faces.renderkit.dom_html_basic.DomBasicRenderer.encodeParentAndChildren(DomBasicRenderer.java:356) at com.icesoft.faces.renderkit.dom_html_basic.DomBasicRenderer.encodeParentAndChildren(DomBasicRenderer.java:365) at com.icesoft.faces.renderkit.dom_html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:96) at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:837) at com.icesoft.faces.renderkit.dom_html_basic.DomBasi And this seems to indicate that there is something that the TextInstruction is encountering that is not serializable to the response. A TextInstruction object is a facelets object that handles writing literal text to the responsewriter.
        Hide
        Brad Kroeger added a comment -

        Rev 25051: Implement Serializable on session scope classes. The ComponentConfig.java class is used by the tabView component.

        Assigning to Ken as I'm not sure how we test this commit.

        Show
        Brad Kroeger added a comment - Rev 25051: Implement Serializable on session scope classes. The ComponentConfig.java class is used by the tabView component. Assigning to Ken as I'm not sure how we test this commit.
        Brad Kroeger made changes -
        Assignee Brad Kroeger [ brad.kroeger ] Ken Fyten [ ken.fyten ]
        Hide
        Ken Fyten added a comment -

        Greg, please confirm Brad's fix.

        Show
        Ken Fyten added a comment - Greg, please confirm Brad's fix.
        Ken Fyten made changes -
        Assignee Ken Fyten [ ken.fyten ] Greg Dick [ greg.dick ]
        Hide
        Ken Fyten added a comment -

        Assign to Brad to confirm this fix. The instructions state that this can be tested using regular Tomcat 6 as follows:

        To reproduce this in a non-clustered environment I added the <distributable/> tag to my applications web.xml and ran it on Tomcat with session persistence turned on (default).

        Then look for any exceptions as noted in the JIRA in the Tomcat log.

        Show
        Ken Fyten added a comment - Assign to Brad to confirm this fix. The instructions state that this can be tested using regular Tomcat 6 as follows: To reproduce this in a non-clustered environment I added the <distributable/> tag to my applications web.xml and ran it on Tomcat with session persistence turned on (default). Then look for any exceptions as noted in the JIRA in the Tomcat log.
        Ken Fyten made changes -
        Assignee Greg Dick [ greg.dick ] Brad Kroeger [ brad.kroeger ]
        Hide
        Brad Kroeger added a comment -

        I don't have NetBeans on my machine right now, to expedite things, I am assigning to Arran to test and have provided him with an updated version of the icefaces-composite-comps.jar

        Show
        Brad Kroeger added a comment - I don't have NetBeans on my machine right now, to expedite things, I am assigning to Arran to test and have provided him with an updated version of the icefaces-composite-comps.jar
        Brad Kroeger made changes -
        Assignee Brad Kroeger [ brad.kroeger ] Arran Mccullough [ arran.mccullough ]
        Hide
        Arran Mccullough added a comment -

        Tested the new jar file with existing test case. No exceptions are thrown so it looks like the fix has worked.

        Show
        Arran Mccullough added a comment - Tested the new jar file with existing test case. No exceptions are thrown so it looks like the fix has worked.
        Arran Mccullough made changes -
        Status Open [ 1 ] Resolved [ 5 ]
        Resolution Fixed [ 1 ]
        Ken Fyten made changes -
        Status Resolved [ 5 ] Closed [ 6 ]
        Assignee Priority P1

          People

          • Assignee:
            Arran Mccullough
            Reporter:
            Arran Mccullough
          • Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: