5 Replies Latest reply on Jul 20, 2006 10:19 AM by mschmidke

    begin method invoked from a long running conversation, try u

    mschmidke

      Hello,

      these are still my first steps with MyFaces, Facelets an Seam, but the problems really overwhelm me.

      Here is another one:

      begin method invoked from a long running conversation, try using @Begin(join=true)
      


      I don't understand anything. I'm using a stateful session bean annotated like this:
      @Stateful
      @Scope(ScopeType.CONVERSATION)
      @Name("leistungsschein")
      


      It has a method
       public @Create @Begin void init() {
       kontozeilen_vorbereiten();
       }
      


      There is no other method annotated "@Begin". And, as expected, the init() method is called exactly once.

      Which "begin method" is meant by the error message? There is none ...


      Regards,

      Marcus.


        • 1. Re: begin method invoked from a long running conversation, t
          bfo81

          Hallihallo Marcus ;)

          It seems as if there is already a conversation running. Maybe there's a @Begin method in another bean that has been invoked before. And when Seam encouters the method you quoted then Seam complains that there is already a conversation. So there are two possibilities:

          - @Begin(join=true) to "take part" in the currently running conversation

          - @Begin(nested=true) to start a "sub-conversation" in the currently running conversation

          • 2. Re: begin method invoked from a long running conversation, t
            mschmidke

            Hallo bfo81 [mein Englisch scheint wirklich furchtbar zu sein :-)],

            no, there is absolutely no second @Begin in the whole application.

            Trying nested isn't what I want. So I tried join, but this only leads to a lot of other error messages:

            org.hibernate.exception.GenericJDBCException: Cannot open connection
            Caused by: org.jboss.util.NestedSQLException: Transaction is not active: tx=TransactionImpl:XidImpl[FormatId=257, GlobalId=WPIT0174/15, BranchQual=, localId=15]; - nested throwable: (javax.resource.ResourceException: Transaction is not active: tx=TransactionImpl:XidImpl[FormatId=257, GlobalId=WPIT0174/15, BranchQual=, localId=15])
            javax.ejb.EJBTransactionRolledbackException: javax.ejb.EJBNoSuchObjectException: Could not find Stateful bean: ak5u-xp76gl-epuxyl69-1-epuxzz2s-8
            


            All those errors occur since I've coded the absolutely very first inputText JSF element in my life. I'm building my first page for a few days now. Until now I only had outputText and so on. Just to see something.

            Next step is turning the outputText into inputText - and - crash.

            By the way, the page is rendered anyway. Looks fine, even with all those error messages in STDERR. But the next request gives an Tomcat error report.

            • 3. Re: begin method invoked from a long running conversation, t
              pmuir

              Can you simplyfy the SFSB and view code as much as possible and post them.

              • 4. Re: begin method invoked from a long running conversation, t
                mschmidke

                It seems I'm doing something completely wrong. I discovered that the stateful session conversation context bean is created several times during rendering of the single request.

                Here the debug output:

                This is the first attempt to access the Seam Component named "leistungsschein". It isn't there, it is created, everything is fine.

                2006-07-20 15:14:32,177 DEBUG [org.jboss.seam.jsf.SeamVariableResolver] resolving name: leistungsschein
                2006-07-20 15:14:32,177 DEBUG [org.jboss.seam.Component] instantiating Seam component: leistungsschein
                2006-07-20 15:14:32,177 DEBUG [org.jboss.seam.util.Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                2006-07-20 15:14:32,177 DEBUG [org.jboss.ejb3.entity.ExtendedPersistenceContextPropagationInterceptor] ++++ LongLivedSessionPropagationInterceptor
                


                Afterwards, lots of successful lookups like this:
                2006-07-20 15:14:33,224 DEBUG [org.jboss.seam.jsf.SeamVariableResolver] resolving name: leistungsschein
                2006-07-20 15:14:33,224 DEBUG [org.jboss.seam.contexts.Contexts] found in conversation context: leistungsschein
                

                This all takes place during RENDER_RESPONSE and matches the EL calls to the Seam component in the page.

                But then, suddenly:
                2006-07-20 15:14:33,912 DEBUG [org.jboss.seam.interceptors.RemoveInterceptor] Stateful component was removed: leistungsschein
                

                Seam intercepts that the container has decided to remove the bean. What follows is clear - Seam recreates the bean, runs into @Begin method and complains about the already begun conversation.

                But why does the container decide to remove the stateful bean??

                I fear that it's an absolute beginner's error. But, in fact, I am an absolute beginner. Hope it's allowed to make some.

                Regards,

                Marcus.

                • 5. Exception in method called by EL isn't logged
                  mschmidke

                  Ok.
                  There it is.
                  An exception in one of my methods which is called from EL.
                  Ok, the exception is clearly my fault.

                  But that it is completely hidden and is shown nowhere among the forest of followup exceptions, this is a really hard qualifying examination for beginners like me.

                  May I now join the club of seam users?