6 Replies Latest reply on Aug 1, 2007 9:01 AM by Pete Muir

    s:convertEntity - EntityManager is closed.

    asaf sh Expert

      Hey,
      I generated a list action automatically with seam-gen that seems to work just fine,

      I'm trying to add to the 'search parameters' in my list which extends EntityQuery a parameter that is based on some other entity,

      I use h:selectOneMenu + s:selectItems and s:convertEntity tags,

      but when I submit the form I get an 'EntityManager is closed' exception,


      I guess this is due to the fact that during the form submit the EntityManager that is used by s:selectItems is closed,


      What is the correct way to fix this issue? I guess having other entities as parameters is a must,


      Many thanks,
      Asaf.

        • 2. Re: s:convertEntity - EntityManager is closed.
          Tom Barry Newbie

          I had this problem with Seam 2.0.0.BETA1 too. It went away after rebuilding the seam libraries CVS (about a week or so ago).

          • 3. Re: s:convertEntity - EntityManager is closed.
            asaf sh Expert

            Hey,
            I upgraded to CVS version and the entityManager error stopped from hapening, but I have encountered another issue,

            when I add a search parameter to the EntityQuery that has a <s:convertEntity> tag, + the parameter within the myList.page.xml file,

            submitting the form results a argument type mismatch

            I assume it is a problem to pass parameters which are entities,
            Is there any way to solve this issue? I think it is important to support search parameters via entities when using EntityQuery,


            here's the stack trace, just in case:

            01:15:38,203 ERROR [SeamPhaseListener] uncaught exception
            javax.el.ELException: java.lang.IllegalArgumentException: argument type mismatch
             at javax.el.BeanELResolver.setValue(BeanELResolver.java:116)
             at javax.el.CompositeELResolver.setValue(CompositeELResolver.java:68)
             at com.sun.faces.el.FacesCompositeELResolver.setValue(FacesCompositeELResolver.java:93)
             at org.jboss.el.parser.AstPropertySuffix.setValue(AstPropertySuffix.java:73)
             at org.jboss.el.parser.AstValue.setValue(AstValue.java:84)
             at org.jboss.el.ValueExpressionImpl.setValue(ValueExpressionImpl.java:249)
             at org.jboss.seam.core.Expressions$1.setValue(Expressions.java:117)
             at org.jboss.seam.navigation.Pages.applyConvertedValidatedValuesToModel(Pages.java:753)
             at org.jboss.seam.navigation.Pages.postRestore(Pages.java:392)
             at org.jboss.seam.jsf.SeamPhaseListener.postRestorePage(SeamPhaseListener.java:527)
             at org.jboss.seam.jsf.SeamPhaseListener.afterRestoreView(SeamPhaseListener.java:374)
             at org.jboss.seam.jsf.SeamPhaseListener.afterServletPhase(SeamPhaseListener.java:211)
             at org.jboss.seam.jsf.SeamPhaseListener.afterPhase(SeamPhaseListener.java:184)
             at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:280)
             at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
             at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
             at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290
             at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
             at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:85)
             at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235
             at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
             at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:82)
             at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:85)
             at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:68)
             at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
             at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:68)
             at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:44)
             at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:68)
             at org.ajax4jsf.framework.ajax.xmlfilter.BaseFilter.doFilter(BaseFilter.java:293)
             at org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:60)
             at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:68)
             at org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:58)
             at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:68)
             at org.jboss.seam.debug.hot.HotDeployFilter.doFilter(HotDeployFilter.java:68)
             at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:68)
             at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:149)
             at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235
             at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
             at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:82)
             at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:85)
             at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:68)
             at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
             at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:68)
             at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:44)
             at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:68)
             at org.ajax4jsf.framework.ajax.xmlfilter.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:127)
             at org.ajax4jsf.framework.ajax.xmlfilter.BaseFilter.doFilter(BaseFilter.java:277)
             at org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:60)
             at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:68)
             at org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:58)
             at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:68)
             at org.jboss.seam.debug.hot.HotDeployFilter.doFilter(HotDeployFilter.java:68)
             at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:68)
             at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:149)
             at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235
             at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
             at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
             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:230)
             at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
             at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
             at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:433)
             at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
             at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
             at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
             at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
             at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
             at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:241)
             at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
             at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:580)
             at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
             at java.lang.Thread.run(Thread.java:619)
            Caused by: java.lang.IllegalArgumentException: argument type mismatch
             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 javax.el.BeanELResolver.setValue(BeanELResolver.java:108)
             ... 72 more
            


            Thanks.



            • 4. Re: s:convertEntity - EntityManager is closed.
              Pete Muir Master

              Post the relevent bits of components.xml, pages.xml and the view.

              • 5. Re: s:convertEntity - EntityManager is closed.
                asaf sh Expert

                Here:
                component.xml

                <factory name="guiSystems" value="#{guiSystemsQuery.resultList}" />
                 <framework:entity-query name="guiSystemsQuery"
                 ejbql="select s from System s"
                 order="s.displayName asc"/>
                


                in view:
                <s:decorate template="layout/display.xhtml">
                 <ui:define name="label">Target-System</ui:define>
                 <h:selectOneMenu id="system"
                 value="#{someList.acc.system}" required="false" disabled="true">
                 <s:selectItems value="#{guiSystems}" var="s"
                 label="#{s.displayName}" noSelectionLabel="-Select-" />
                 <s:convertEntity />
                 </h:selectOneMenu>
                </s:decorate>
                


                where 'someList' is a seam component that extends EntityQuery,
                in someList I have a restriction such as:
                lower(acc.system) = #{someList.acc.system}
                



                I have a viewfile.page.xml file that has the parameters:
                <param name="system" value="#{someList.acc.system}"/>
                


                When I add this parameter, it result the exception,


                Many Thanks!

                • 6. Re: s:convertEntity - EntityManager is closed.
                  Pete Muir Master

                  You'll need to debug to find out exactly which part of the property isn't getting set.