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.

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

          Hmm, anyone? :)

          • 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.