1 2 Previous Next 22 Replies Latest reply on Nov 17, 2006 5:21 PM by Chris Wash

    how can I do optimistic locking with crud framework?

    Chuck Adams Novice

      Newbie question alert... I'm working with the contactlist sample app (works fine now that I'm back to using myfaces) and I want to prevent lost updates. I added a version field to Contact, gave it a @Version annotation, and a getter/setter pair, and it seems to get updated by Hibernate as expected. But when I try overlapping edits, I just can't seem to get it to throw an OptimisticLockException, the last commit still wins every time.

      Am I naively assuming that just adding a @Version field turns optimistic lock enforcement on automatically? Is there something else I need to do to make optimistic locking work?

      I'm not quite sure, when and if I do get it working, what the practice for handling such an exception is either. I suppose I can hack in some kind of redirect.

        • 1. Re: how can I do optimistic locking with crud framework?
          Gavin King Master

          If you want "first commit wins", you would need a conversation. You can install the EntityHome as a conversation-scoped component, and begin a conversation when rendering the edit screen, and end it when the update or delete has been performed.

          • 2. Re: how can I do optimistic locking with crud framework?
            Chuck Adams Novice

            I'm probably doing this completely wrong... I took contactHome out of components.xml and replaced it with this class:

            @Name("contactHome")
            @Scope(ScopeType.CONVERSATION)
            public class ContactHome extends EntityHome<Contact> {
            
             @Logger
             private Log log;
            
             public ContactHome() {
             super();
             setCreatedMessage("New contact #{contact.firstName} #{contact.lastName} created");
             setDeletedMessage("Contact #{contact.firstName} #{contact.lastName} deleted");
             setUpdatedMessage("Contact #{contact.firstName} #{contact.lastName} updated");
            
             }
            
             @Begin
             public String beginEdit() {
             log.info("Conversation begun by beginEdit()");
             return null;
             }
            
             @End
             public String update() {
             log.info("Conversation ended by update()");
             return super.update();
             }
            
             @Factory("contact")
             public Contact initContact() {
             return getInstance();
             }
            }
            
            



            And I edited pages.xml to add the beginEdit action:

             <page view-id="/editContact.xhtml" action="#{contactHome.beginEdit}">
             <param name="contactId" value="#{contactHome.id}" converterId="javax.faces.Long"/>
             </page>
            




            Everything works the way it did before (including "last edit wins") though now I get a traceback on the console after update:

            14:22:42,553 ERROR [PhaseListenerManager] Exception in PhaseListener RENDER_RESPONSE(6) afterPhase
            java.lang.IllegalStateException: EntityManager is closed
             at org.hibernate.ejb.EntityManagerImpl.getSession(EntityManagerImpl.java:41)
             at org.hibernate.ejb.AbstractEntityManagerImpl.getReference(AbstractEntityManagerImpl.java:137)
             at org.jboss.seam.interceptors.ManagedEntityIdentityInterceptor.entityIdsToRefs(ManagedEntityIdentityInterceptor.java:156)
             at org.jboss.seam.interceptors.ManagedEntityIdentityInterceptor.aroundInvoke(ManagedEntityIdentityInterceptor.java:76)
            




            • 3. Re: how can I do optimistic locking with crud framework?
              Gavin King Master

              (1) Are you sure that a long-running conversation really gets started? I find it basically impossible to believe that optimistic locking would not work if it is being started correctly. Make sure that both requests happen in the same conversation context.

              (2) What is the whole stack trace?

              • 4. Re: how can I do optimistic locking with crud framework?
                Chuck Adams Novice

                I had thought there would be some funniness with a conversation-scoped component starting its own conversation, so I moved beginEdit() to its own class (better design anyway) and edited pages.xml accordingly

                @Name("contactAction")
                public class ContactAction {
                
                 @Logger
                 private Log log;
                
                 @Begin
                 public String beginEdit() {
                 log.info("Conversation begun by beginEdit()");
                 return null;
                 }
                }
                


                Still no luck, same behavior. As for a conversation, I know beginEdit() is getting called (I see the log message) but I guess no conversation is entered after all, since there's no conversationId parameter in the URL when I edit, and the debug page shows no active conversations. I wish I knew why that was.

                I do see a conversationId after I click update, which is when I should expect to see the conversation ended! The debug page does show there's no active conversations after update, however.

                I get the traceback all the same. Here's the whole thing:

                java.lang.IllegalStateException: EntityManager is closed
                 at org.hibernate.ejb.EntityManagerImpl.getSession(EntityManagerImpl.java:41)
                 at org.hibernate.ejb.AbstractEntityManagerImpl.getReference(AbstractEntityManagerImpl.java:137)
                 at org.jboss.seam.interceptors.ManagedEntityIdentityInterceptor.entityIdsToRefs(ManagedEntityIdentityInterceptor.java:156)
                 at org.jboss.seam.interceptors.ManagedEntityIdentityInterceptor.aroundInvoke(ManagedEntityIdentityInterceptor.java:76)
                 at sun.reflect.GeneratedMethodAccessor230.invoke(Unknown Source)
                 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
                 at java.lang.reflect.Method.invoke(Method.java:589)
                 at org.jboss.seam.util.Reflections.invoke(Reflections.java:17)
                 at org.jboss.seam.intercept.Interceptor.aroundInvoke(Interceptor.java:172)
                 at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:66)
                 at org.jboss.seam.interceptors.OutcomeInterceptor.interceptOutcome(OutcomeInterceptor.java:23)
                 at sun.reflect.GeneratedMethodAccessor225.invoke(Unknown Source)
                 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
                 at java.lang.reflect.Method.invoke(Method.java:589)
                 at org.jboss.seam.util.Reflections.invoke(Reflections.java:17)
                 at org.jboss.seam.intercept.Interceptor.aroundInvoke(Interceptor.java:172)
                 at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:66)
                 at org.jboss.seam.interceptors.RollbackInterceptor.rollbackIfNecessary(RollbackInterceptor.java:30)
                 at sun.reflect.GeneratedMethodAccessor224.invoke(Unknown Source)
                 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
                 at java.lang.reflect.Method.invoke(Method.java:589)
                 at org.jboss.seam.util.Reflections.invoke(Reflections.java:17)
                 at org.jboss.seam.intercept.Interceptor.aroundInvoke(Interceptor.java:172)
                 at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:66)
                 at org.jboss.seam.interceptors.ConversationInterceptor.endOrBeginLongRunningConversation(ConversationInterceptor.java:60)
                 at sun.reflect.GeneratedMethodAccessor223.invoke(Unknown Source)
                 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
                 at java.lang.reflect.Method.invoke(Method.java:589)
                 at org.jboss.seam.util.Reflections.invoke(Reflections.java:17)
                 at org.jboss.seam.intercept.Interceptor.aroundInvoke(Interceptor.java:172)
                 at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:66)
                 at org.jboss.seam.interceptors.BusinessProcessInterceptor.manageBusinessProcessContext(BusinessProcessInterceptor.java:50)
                 at sun.reflect.GeneratedMethodAccessor222.invoke(Unknown Source)
                 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
                 at java.lang.reflect.Method.invoke(Method.java:589)
                 at org.jboss.seam.util.Reflections.invoke(Reflections.java:17)
                 at org.jboss.seam.intercept.Interceptor.aroundInvoke(Interceptor.java:172)
                 at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:66)
                 at org.jboss.seam.interceptors.TransactionInterceptor$1.work(TransactionInterceptor.java:26)
                 at org.jboss.seam.util.Work.workInTransaction(Work.java:31)
                 at org.jboss.seam.interceptors.TransactionInterceptor.doInTransactionIfNecessary(TransactionInterceptor.java:20)
                 at sun.reflect.GeneratedMethodAccessor221.invoke(Unknown Source)
                 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
                 at java.lang.reflect.Method.invoke(Method.java:589)
                 at org.jboss.seam.util.Reflections.invoke(Reflections.java:17)
                 at org.jboss.seam.intercept.Interceptor.aroundInvoke(Interceptor.java:172)
                 at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:66)
                 at org.jboss.seam.interceptors.ConversationalInterceptor.checkConversationForConversationalBean(ConversationalInterceptor.java:81)
                 at sun.reflect.GeneratedMethodAccessor220.invoke(Unknown Source)
                 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
                 at java.lang.reflect.Method.invoke(Method.java:589)
                 at org.jboss.seam.util.Reflections.invoke(Reflections.java:17)
                 at org.jboss.seam.intercept.Interceptor.aroundInvoke(Interceptor.java:172)
                 at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:66)
                 at org.jboss.seam.interceptors.EventInterceptor.aroundInvoke(EventInterceptor.java:51)
                 at sun.reflect.GeneratedMethodAccessor219.invoke(Unknown Source)
                 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
                 at java.lang.reflect.Method.invoke(Method.java:589)
                 at org.jboss.seam.util.Reflections.invoke(Reflections.java:17)
                 at org.jboss.seam.intercept.Interceptor.aroundInvoke(Interceptor.java:172)
                 at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:66)
                 at org.jboss.seam.interceptors.RemoveInterceptor.removeIfNecessary(RemoveInterceptor.java:40)
                 at sun.reflect.GeneratedMethodAccessor218.invoke(Unknown Source)
                 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
                 at java.lang.reflect.Method.invoke(Method.java:589)
                 at org.jboss.seam.util.Reflections.invoke(Reflections.java:17)
                 at org.jboss.seam.intercept.Interceptor.aroundInvoke(Interceptor.java:172)
                 at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:66)
                 at org.jboss.seam.interceptors.ExceptionInterceptor.handleExceptions(ExceptionInterceptor.java:45)
                 at sun.reflect.GeneratedMethodAccessor217.invoke(Unknown Source)
                 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
                 at java.lang.reflect.Method.invoke(Method.java:589)
                 at org.jboss.seam.util.Reflections.invoke(Reflections.java:17)
                 at org.jboss.seam.intercept.Interceptor.aroundInvoke(Interceptor.java:172)
                 at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:66)
                 at org.jboss.seam.interceptors.AsynchronousInterceptor.invokeAsynchronouslyIfNecessary(AsynchronousInterceptor.java:32)
                 at sun.reflect.GeneratedMethodAccessor216.invoke(Unknown Source)
                 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
                 at java.lang.reflect.Method.invoke(Method.java:589)
                 at org.jboss.seam.util.Reflections.invoke(Reflections.java:17)
                 at org.jboss.seam.intercept.Interceptor.aroundInvoke(Interceptor.java:172)
                 at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:66)
                 at org.jboss.seam.intercept.RootInterceptor.invokeInContexts(RootInterceptor.java:168)
                 at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:141)
                 at org.jboss.seam.intercept.RootInterceptor.aroundInvoke(RootInterceptor.java:128)
                 at org.jboss.seam.intercept.JavaBeanInterceptor.interceptInvocation(JavaBeanInterceptor.java:103)
                 at org.jboss.seam.intercept.JavaBeanInterceptor.intercept(JavaBeanInterceptor.java:69)
                 at org.jboss.seam.example.crud.ContactHome$$EnhancerByCGLIB$$6e1de699.clearDirty(<generated>)
                 at org.jboss.seam.contexts.Lifecycle.isAttributeDirty(Lifecycle.java:467)
                 at org.jboss.seam.contexts.ServerConversationContext.flush(ServerConversationContext.java:179)
                 at org.jboss.seam.contexts.Lifecycle.flushAndDestroyContexts(Lifecycle.java:356)
                 at org.jboss.seam.contexts.Lifecycle.endRequest(Lifecycle.java:259)
                 at org.jboss.seam.jsf.SeamPhaseListener.afterPhase(SeamPhaseListener.java:100)
                 at org.apache.myfaces.lifecycle.PhaseListenerManager.informPhaseListenersAfter(PhaseListenerManager.java:89)
                 at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:391)
                 at javax.faces.webapp.FacesServlet.service(FacesServlet.java:138)
                 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
                 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
                 at org.jboss.seam.servlet.SeamRedirectFilter.doFilter(SeamRedirectFilter.java:33)
                 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
                 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
                 at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
                 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
                 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
                 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
                 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
                 at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175)
                 at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74)
                 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
                 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
                 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
                 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
                 at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
                 at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
                 at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
                 at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
                 at java.lang.Thread.run(Thread.java:619)
                




                • 5. Re: how can I do optimistic locking with crud framework?
                  Gavin King Master

                  I bet you don't have the SeamRedirectFilter installed.

                  • 6. Re: how can I do optimistic locking with crud framework?
                    Chuck Adams Novice

                     

                    "gavin.king@jboss.com" wrote:
                    I bet you don't have the SeamRedirectFilter installed.


                    It's definitely installed.

                     <filter>
                     <filter-name>Seam Redirect Filter</filter-name>
                     <filter-class>
                     org.jboss.seam.servlet.SeamRedirectFilter
                     </filter-class>
                     </filter>
                    
                     <filter-mapping>
                     <filter-name>Seam Redirect Filter</filter-name>
                     <url-pattern>*.seam</url-pattern>
                     </filter-mapping>
                    



                    • 7. Re: how can I do optimistic locking with crud framework?
                      Gavin King Master

                      Well, I'm not sure then. The other problem is a bug, now fixed in CVS.

                      • 8. Re: how can I do optimistic locking with crud framework?
                        Gavin King Master

                        BTW, try enabling a debug-level Seam log, to see what happens with conversation starting/ending.

                        • 9. Re: how can I do optimistic locking with crud framework?
                          Chuck Adams Novice

                          my log4j kung fu is poor, so I just added this to server/default/conf/log4j.xml and restarted, to no avail.

                           <category name="org.jboss.seam">
                           <priority value="DEBUG"/>
                           </category>
                          


                          I have tried many other things as well, but I remain defeated. How do I enable debug logging?


                          • 10. Re: how can I do optimistic locking with crud framework?
                            Chuck Adams Novice

                            It took much fighting with log4j.xml, but I got a debug log. The whole log is 1340 or so lines long, so I'll see what I can glean from it

                            When I click "Edit Contact", I do see it creating a conversation:

                            16:32:06,766 DEBUG [Manager] No stored conversation, or concurrent call to the stored conversation
                            16:32:06,776 DEBUG [AbstractSeamPhaseListener] After restoring conversation context: ConversationContext(3)
                            ...
                            16:32:06,876 INFO [ContactAction] Conversation begun by beginEdit()
                            ...
                            16:32:07,066 DEBUG [Component] instantiating Seam component: conversation
                            ...
                            16:32:07,066 DEBUG [Contexts] found in conversation context: contactHome
                            ..
                            16:32:07,166 DEBUG [Manager] Discarding conversation state: 3
                            16:32:07,166 DEBUG [Events] Processing event:org.jboss.seam.preRemoveVariable.org.jboss.seam.core.manager.conversationId
                            16:32:07,166 DEBUG [Events] Processing event:org.jboss.seam.postRemoveVariable.org.jboss.seam.core.manager.conversationId
                            16:32:07,206 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                            16:32:07,206 DEBUG [AbstractSeamPhaseListener] committing transaction after phase: RENDER_RESPONSE(6)
                            16:32:07,206 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                            16:32:07,206 DEBUG [Lifecycle] After render response, destroying contexts
                            16:32:07,206 DEBUG [Lifecycle] destroying business process context
                            16:32:07,206 DEBUG [Events] Processing event:org.jboss.seam.preDestroyContext.BUSINESS_PROCESS
                            16:32:07,206 DEBUG [Events] Processing event:org.jboss.seam.postDestroyContext.BUSINESS_PROCESS
                            16:32:07,206 DEBUG [Lifecycle] destroying conversation context
                            ...
                            16:32:07,327 DEBUG [Lifecycle] <<< End web request
                            


                            And that's within the same request. That conversation shouldn't have been destroyed, should it?

                            Then when I click update:

                            16:32:41,999 DEBUG [Manager] No stored conversation, or concurrent call to the stored conversation
                            16:32:41,999 DEBUG [AbstractSeamPhaseListener] After restoring conversation context: ConversationContext(4)
                            ...
                            16:32:42,189 DEBUG [Manager] Storing conversation state: 4
                            16:32:42,189 DEBUG [Component] instantiating Seam component: conversation
                            16:32:42,189 DEBUG [Component] initializing new instance of: conversation
                            
                            16:32:42,189 DEBUG [Events] Processing event:org.jboss.seam.postDestroyContext.EVENT
                            16:32:42,189 DEBUG [Lifecycle] <<< End web request
                            16:32:42,199 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                            16:32:42,199 DEBUG [AbstractSeamPhaseListener] beginning transaction prior to phase: RESTORE_VIEW(1)
                            16:32:42,199 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                            16:32:42,199 DEBUG [Lifecycle] >>> Begin web request
                            16:32:42,199 DEBUG [Component] instantiating Seam component: org.jboss.seam.core.manager
                            16:32:42,199 DEBUG [Component] initializing new instance of: org.jboss.seam.core.manager
                            16:32:42,199 DEBUG [Events] Processing event:org.jboss.seam.preSetVariable.org.jboss.seam.core.manager
                            16:32:42,199 DEBUG [Events] Processing event:org.jboss.seam.postSetVariable.org.jboss.seam.core.manager
                            16:32:42,199 DEBUG [Events] Processing event:org.jboss.seam.postCreate.org.jboss.seam.core.manager
                            16:32:42,199 DEBUG [Manager] Found conversation id in request parameter: 4
                            16:32:42,199 DEBUG [Manager] Restoring conversation with id: 4
                            16:32:42,199 DEBUG [AbstractSeamPhaseListener] After restoring conversation context: ConversationContext(4)
                            
                            ... and so on ...
                            


                            So it does look like it's keeping the conversation across the redirect, but I can't figure out why it's destroying the first conversation.

                            I could post the whole log if you want.



                            • 11. Re: how can I do optimistic locking with crud framework?
                              Gavin King Master

                              Post the whole lot for the first request cycle.

                              • 12. Re: how can I do optimistic locking with crud framework?
                                Chuck Adams Novice

                                Here you go:

                                16:32:06,726 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:06,726 DEBUG [AbstractSeamPhaseListener] beginning transaction prior to phase: RESTORE_VIEW(1)
                                16:32:06,726 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:06,726 DEBUG [Lifecycle] >>> Begin web request
                                16:32:06,726 DEBUG [Component] instantiating Seam component: org.jboss.seam.core.manager
                                16:32:06,726 DEBUG [Component] initializing new instance of: org.jboss.seam.core.manager
                                16:32:06,726 DEBUG [Events] Processing event:org.jboss.seam.preSetVariable.org.jboss.seam.core.manager
                                16:32:06,726 DEBUG [Events] Processing event:org.jboss.seam.postSetVariable.org.jboss.seam.core.manager
                                16:32:06,766 DEBUG [Events] Processing event:org.jboss.seam.postCreate.org.jboss.seam.core.manager
                                16:32:06,766 DEBUG [Manager] No stored conversation, or concurrent call to the stored conversation
                                16:32:06,776 DEBUG [AbstractSeamPhaseListener] After restoring conversation context: ConversationContext(3)
                                16:32:06,776 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:06,776 DEBUG [AbstractSeamPhaseListener] committing transaction after phase: RESTORE_VIEW(1)
                                16:32:06,776 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:06,776 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:06,776 DEBUG [AbstractSeamPhaseListener] beginning transaction prior to phase: RENDER_RESPONSE(6)
                                16:32:06,776 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:06,776 DEBUG [SeamVariableResolver] resolving name: contactHome
                                16:32:06,776 DEBUG [Component] instantiating Seam component: contactHome
                                16:32:06,776 DEBUG [Component] initializing new instance of: contactHome
                                16:32:06,776 DEBUG [Component] trying to inject with hierarchical context search: facesMessages
                                16:32:06,776 DEBUG [Component] instantiating Seam component: facesMessages
                                16:32:06,776 DEBUG [Component] initializing new instance of: facesMessages
                                16:32:06,776 DEBUG [Events] Processing event:org.jboss.seam.preSetVariable.facesMessages
                                16:32:06,776 DEBUG [Events] Processing event:org.jboss.seam.postSetVariable.facesMessages
                                16:32:06,776 DEBUG [Events] Processing event:org.jboss.seam.postCreate.facesMessages
                                16:32:06,776 DEBUG [Component] instantiating Seam component: entityManager
                                16:32:06,776 DEBUG [Component] initializing new instance of: entityManager
                                16:32:06,776 DEBUG [Events] Processing event:org.jboss.seam.preSetVariable.entityManager
                                16:32:06,776 DEBUG [Events] Processing event:org.jboss.seam.postSetVariable.entityManager
                                16:32:06,776 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:06,776 DEBUG [Component] instantiating Seam component: org.jboss.seam.core.persistenceContexts
                                16:32:06,776 DEBUG [Component] initializing new instance of: org.jboss.seam.core.persistenceContexts
                                16:32:06,776 DEBUG [Events] Processing event:org.jboss.seam.preSetVariable.org.jboss.seam.core.persistenceContexts
                                16:32:06,776 DEBUG [Events] Processing event:org.jboss.seam.postSetVariable.org.jboss.seam.core.persistenceContexts
                                16:32:06,776 DEBUG [Events] Processing event:org.jboss.seam.postCreate.org.jboss.seam.core.persistenceContexts
                                16:32:06,776 DEBUG [Contexts] found in conversation context: org.jboss.seam.core.persistenceContexts
                                16:32:06,776 DEBUG [ManagedPersistenceContext] created seam managed persistence context for persistence unit: java:/fiatEntityManagerFactory
                                16:32:06,776 DEBUG [Events] Processing event:org.jboss.seam.postCreate.entityManager
                                16:32:06,776 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:06,776 DEBUG [Contexts] found in conversation context: org.jboss.seam.core.persistenceContexts
                                16:32:06,776 DEBUG [Events] Processing event:org.jboss.seam.preSetVariable.contactHome
                                16:32:06,776 DEBUG [Events] Processing event:org.jboss.seam.postSetVariable.contactHome
                                16:32:06,776 DEBUG [Events] Processing event:org.jboss.seam.postCreate.contactHome
                                16:32:06,776 DEBUG [SeamVariableResolver] resolved name to Seam component
                                16:32:06,776 DEBUG [Component] trying to inject with hierarchical context search: facesMessages
                                16:32:06,776 DEBUG [Contexts] found in conversation context: facesMessages
                                16:32:06,776 DEBUG [Contexts] found in conversation context: org.jboss.seam.core.persistenceContexts
                                16:32:06,786 DEBUG [Lifecycle] flushing page context
                                16:32:06,786 DEBUG [SeamVariableResolver] resolving name: contactAction
                                16:32:06,786 DEBUG [Component] instantiating Seam component: contactAction
                                16:32:06,786 DEBUG [Component] initializing new instance of: contactAction
                                16:32:06,856 DEBUG [Events] Processing event:org.jboss.seam.preSetVariable.contactAction
                                16:32:06,856 DEBUG [Events] Processing event:org.jboss.seam.postSetVariable.contactAction
                                16:32:06,866 DEBUG [Events] Processing event:org.jboss.seam.postCreate.contactAction
                                16:32:06,866 DEBUG [SeamVariableResolver] resolved name to Seam component
                                16:32:06,876 DEBUG [Component] instantiating Seam component: interpolator
                                16:32:06,876 DEBUG [Component] initializing new instance of: interpolator
                                16:32:06,876 INFO [ContactAction] Conversation begun by beginEdit()
                                16:32:06,876 INFO [ContactAction] Conversation begun by beginEdit()
                                16:32:06,876 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:06,876 DEBUG [AbstractSeamPhaseListener] committing transaction after phase: INVOKE_APPLICATION(5)
                                16:32:06,876 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:06,876 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:06,876 DEBUG [AbstractSeamPhaseListener] beginning transaction prior to phase: INVOKE_APPLICATION(5)
                                16:32:06,876 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:07,056 DEBUG [SeamVariableResolver] resolving name: exampleContact
                                16:32:07,066 DEBUG [Component] instantiating Seam component: exampleContact
                                16:32:07,066 DEBUG [Component] initializing new instance of: exampleContact
                                16:32:07,066 DEBUG [Events] Processing event:org.jboss.seam.preSetVariable.exampleContact
                                16:32:07,066 DEBUG [Events] Processing event:org.jboss.seam.postSetVariable.exampleContact
                                16:32:07,066 DEBUG [Events] Processing event:org.jboss.seam.postCreate.exampleContact
                                16:32:07,066 DEBUG [SeamVariableResolver] resolved name to Seam component
                                16:32:07,066 DEBUG [SeamVariableResolver] resolving name: exampleContact
                                16:32:07,066 DEBUG [Contexts] found in conversation context: exampleContact
                                16:32:07,066 DEBUG [SeamVariableResolver] resolved name to Seam component
                                16:32:07,066 DEBUG [SeamVariableResolver] resolving name: contacts
                                16:32:07,066 DEBUG [Component] instantiating Seam component: contacts
                                16:32:07,066 DEBUG [Component] initializing new instance of: contacts
                                16:32:07,066 DEBUG [Contexts] found in application context: expressions
                                16:32:07,066 DEBUG [SeamVariableResolver] resolving name: entityManager
                                16:32:07,066 DEBUG [Contexts] found in conversation context: entityManager
                                16:32:07,066 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:07,066 DEBUG [SeamVariableResolver] resolved name to Seam component
                                16:32:07,066 DEBUG [Events] Processing event:org.jboss.seam.preSetVariable.contacts
                                16:32:07,066 DEBUG [Events] Processing event:org.jboss.seam.postSetVariable.contacts
                                16:32:07,066 DEBUG [Events] Processing event:org.jboss.seam.postCreate.contacts
                                16:32:07,066 DEBUG [SeamVariableResolver] resolved name to Seam component
                                16:32:07,066 DEBUG [Component] instantiating Seam component: conversation
                                16:32:07,066 DEBUG [Component] initializing new instance of: conversation
                                16:32:07,066 DEBUG [Events] Processing event:org.jboss.seam.preSetVariable.conversation
                                16:32:07,066 DEBUG [Events] Processing event:org.jboss.seam.postSetVariable.conversation
                                16:32:07,066 DEBUG [Events] Processing event:org.jboss.seam.postCreate.conversation
                                16:32:07,066 DEBUG [SeamVariableResolver] resolving name: contactHome
                                16:32:07,066 DEBUG [Contexts] found in conversation context: contactHome
                                16:32:07,066 DEBUG [SeamVariableResolver] resolved name to Seam component
                                16:32:07,066 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:07,066 DEBUG [Component] trying to inject with hierarchical context search: facesMessages
                                16:32:07,066 DEBUG [Contexts] found in conversation context: facesMessages
                                16:32:07,066 INFO [STDOUT] Hibernate: select contact0_.id as id1_0_, contact0_.version as version1_0_, contact0_.firstName as firstName1_0_, contact0_.lastName as lastName1_0_, contact0_.address as address1_0_, contact0_.city as city1_0_, contact0_.state as state1_0_, contact0_.zip as zip1_0_, contact0_.country as country1_0_, contact0_.homePhone as homePhone1_0_, contact0_.businessPhone as busines11_1_0_, contact0_.cellPhone as cellPhone1_0_ from Contact contact0_ where contact0_.id=?
                                16:32:07,066 DEBUG [Contexts] found in conversation context: org.jboss.seam.core.persistenceContexts
                                16:32:07,076 DEBUG [Contexts] found in conversation context: entityManager
                                16:32:07,076 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:07,076 DEBUG [Component] instantiating Seam component: org.jboss.seam.persistence.persistenceProvider
                                16:32:07,076 DEBUG [Component] initializing new instance of: org.jboss.seam.persistence.persistenceProvider
                                16:32:07,076 DEBUG [SeamVariableResolver] resolving name: contactHome
                                16:32:07,076 DEBUG [Contexts] found in conversation context: contactHome
                                16:32:07,076 DEBUG [SeamVariableResolver] resolved name to Seam component
                                16:32:07,076 DEBUG [Contexts] found in conversation context: entityManager
                                16:32:07,076 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:07,076 DEBUG [Component] trying to inject with hierarchical context search: facesMessages
                                16:32:07,076 DEBUG [Contexts] found in conversation context: facesMessages
                                16:32:07,076 DEBUG [Contexts] found in conversation context: org.jboss.seam.core.persistenceContexts
                                16:32:07,076 DEBUG [Contexts] found in conversation context: entityManager
                                16:32:07,076 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:07,076 DEBUG [Component] instantiating Seam component: org.jboss.seam.persistence.persistenceProvider
                                16:32:07,076 DEBUG [Component] initializing new instance of: org.jboss.seam.persistence.persistenceProvider
                                16:32:07,076 DEBUG [SeamVariableResolver] resolving name: contactHome
                                16:32:07,076 DEBUG [Contexts] found in conversation context: contactHome
                                16:32:07,076 DEBUG [SeamVariableResolver] resolved name to Seam component
                                16:32:07,076 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:07,086 DEBUG [Contexts] found in conversation context: entityManager
                                16:32:07,086 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:07,086 DEBUG [Component] trying to inject with hierarchical context search: facesMessages
                                16:32:07,086 DEBUG [Contexts] found in conversation context: facesMessages
                                16:32:07,086 DEBUG [Contexts] found in conversation context: org.jboss.seam.core.persistenceContexts
                                16:32:07,086 DEBUG [Contexts] found in conversation context: entityManager
                                16:32:07,086 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:07,086 DEBUG [Component] instantiating Seam component: org.jboss.seam.persistence.persistenceProvider
                                16:32:07,086 DEBUG [Component] initializing new instance of: org.jboss.seam.persistence.persistenceProvider
                                16:32:07,086 DEBUG [SeamVariableResolver] resolving name: contactHome
                                16:32:07,086 DEBUG [Contexts] found in conversation context: contactHome
                                16:32:07,086 DEBUG [SeamVariableResolver] resolved name to Seam component
                                16:32:07,086 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:07,086 DEBUG [Contexts] found in conversation context: entityManager
                                16:32:07,086 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:07,086 DEBUG [Component] trying to inject with hierarchical context search: facesMessages
                                16:32:07,086 DEBUG [Contexts] found in conversation context: facesMessages
                                16:32:07,086 DEBUG [Contexts] found in conversation context: org.jboss.seam.core.persistenceContexts
                                16:32:07,086 DEBUG [Contexts] found in conversation context: entityManager
                                16:32:07,086 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:07,086 DEBUG [Component] instantiating Seam component: org.jboss.seam.persistence.persistenceProvider
                                16:32:07,086 DEBUG [Component] initializing new instance of: org.jboss.seam.persistence.persistenceProvider
                                16:32:07,086 DEBUG [SeamVariableResolver] resolving name: contactHome
                                16:32:07,086 DEBUG [Contexts] found in conversation context: contactHome
                                16:32:07,086 DEBUG [SeamVariableResolver] resolved name to Seam component
                                16:32:07,086 DEBUG [Contexts] found in conversation context: entityManager
                                16:32:07,086 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:07,086 DEBUG [Component] trying to inject with hierarchical context search: facesMessages
                                16:32:07,086 DEBUG [Contexts] found in conversation context: facesMessages
                                16:32:07,086 DEBUG [Contexts] found in conversation context: org.jboss.seam.core.persistenceContexts
                                16:32:07,086 DEBUG [Contexts] found in conversation context: entityManager
                                16:32:07,086 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:07,086 DEBUG [Component] instantiating Seam component: org.jboss.seam.persistence.persistenceProvider
                                16:32:07,086 DEBUG [Component] initializing new instance of: org.jboss.seam.persistence.persistenceProvider
                                16:32:07,086 DEBUG [SeamVariableResolver] resolving name: contactHome
                                16:32:07,086 DEBUG [Contexts] found in conversation context: contactHome
                                16:32:07,086 DEBUG [SeamVariableResolver] resolved name to Seam component
                                16:32:07,086 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:07,086 DEBUG [Contexts] found in conversation context: entityManager
                                16:32:07,086 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:07,086 DEBUG [Component] trying to inject with hierarchical context search: facesMessages
                                16:32:07,086 DEBUG [Contexts] found in conversation context: facesMessages
                                16:32:07,086 DEBUG [Contexts] found in conversation context: org.jboss.seam.core.persistenceContexts
                                16:32:07,086 DEBUG [Contexts] found in conversation context: entityManager
                                16:32:07,086 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:07,096 DEBUG [Component] instantiating Seam component: org.jboss.seam.persistence.persistenceProvider
                                16:32:07,096 DEBUG [Component] initializing new instance of: org.jboss.seam.persistence.persistenceProvider
                                16:32:07,096 DEBUG [SeamVariableResolver] resolving name: contact
                                16:32:07,096 DEBUG [Contexts] found in conversation context: contactHome
                                16:32:07,096 DEBUG [Contexts] found in conversation context: entityManager
                                16:32:07,096 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:07,096 DEBUG [Component] trying to inject with hierarchical context search: facesMessages
                                16:32:07,096 DEBUG [Contexts] found in conversation context: facesMessages
                                16:32:07,096 DEBUG [Contexts] found in conversation context: org.jboss.seam.core.persistenceContexts
                                16:32:07,096 DEBUG [Contexts] found in conversation context: entityManager
                                16:32:07,096 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:07,096 DEBUG [Component] instantiating Seam component: org.jboss.seam.persistence.persistenceProvider
                                16:32:07,096 DEBUG [Component] initializing new instance of: org.jboss.seam.persistence.persistenceProvider
                                16:32:07,096 DEBUG [Events] Processing event:org.jboss.seam.preSetVariable.contact
                                16:32:07,096 DEBUG [Events] Processing event:org.jboss.seam.postSetVariable.contact
                                16:32:07,096 DEBUG [SeamVariableResolver] resolved name to Seam component
                                16:32:07,096 DEBUG [SeamVariableResolver] resolving name: contact
                                16:32:07,096 DEBUG [Contexts] found in conversation context: contact
                                16:32:07,096 DEBUG [SeamVariableResolver] resolved name to Seam component
                                16:32:07,106 DEBUG [SeamVariableResolver] resolving name: contact
                                16:32:07,106 DEBUG [Contexts] found in conversation context: contact
                                16:32:07,106 DEBUG [SeamVariableResolver] resolved name to Seam component
                                16:32:07,106 DEBUG [SeamVariableResolver] resolving name: contact
                                16:32:07,106 DEBUG [Contexts] found in conversation context: contact
                                16:32:07,106 DEBUG [SeamVariableResolver] resolved name to Seam component
                                16:32:07,106 DEBUG [SeamVariableResolver] resolving name: contact
                                16:32:07,106 DEBUG [Contexts] found in conversation context: contact
                                16:32:07,106 DEBUG [SeamVariableResolver] resolved name to Seam component
                                16:32:07,106 DEBUG [SeamVariableResolver] resolving name: contact
                                16:32:07,106 DEBUG [Contexts] found in conversation context: contact
                                16:32:07,106 DEBUG [SeamVariableResolver] resolved name to Seam component
                                16:32:07,106 DEBUG [SeamVariableResolver] resolving name: contact
                                16:32:07,106 DEBUG [Contexts] found in conversation context: contact
                                16:32:07,106 DEBUG [SeamVariableResolver] resolved name to Seam component
                                16:32:07,106 DEBUG [SeamVariableResolver] resolving name: contact
                                16:32:07,106 DEBUG [Contexts] found in conversation context: contact
                                16:32:07,106 DEBUG [SeamVariableResolver] resolved name to Seam component
                                16:32:07,106 DEBUG [SeamVariableResolver] resolving name: contact
                                16:32:07,106 DEBUG [Contexts] found in conversation context: contact
                                16:32:07,106 DEBUG [SeamVariableResolver] resolved name to Seam component
                                16:32:07,106 DEBUG [SeamVariableResolver] resolving name: contact
                                16:32:07,106 DEBUG [Contexts] found in conversation context: contact
                                16:32:07,106 DEBUG [SeamVariableResolver] resolved name to Seam component
                                16:32:07,106 DEBUG [SeamVariableResolver] resolving name: contact
                                16:32:07,106 DEBUG [Contexts] found in conversation context: contact
                                16:32:07,106 DEBUG [SeamVariableResolver] resolved name to Seam component
                                16:32:07,106 DEBUG [SeamVariableResolver] resolving name: contactHome
                                16:32:07,106 DEBUG [Contexts] found in conversation context: contactHome
                                16:32:07,106 DEBUG [SeamVariableResolver] resolved name to Seam component
                                16:32:07,106 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:07,106 DEBUG [Contexts] found in conversation context: entityManager
                                16:32:07,106 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:07,106 DEBUG [Component] trying to inject with hierarchical context search: facesMessages
                                16:32:07,106 DEBUG [Contexts] found in conversation context: facesMessages
                                16:32:07,106 DEBUG [Contexts] found in conversation context: org.jboss.seam.core.persistenceContexts
                                16:32:07,106 DEBUG [Contexts] found in conversation context: entityManager
                                16:32:07,106 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:07,106 DEBUG [Component] instantiating Seam component: org.jboss.seam.persistence.persistenceProvider
                                16:32:07,106 DEBUG [Component] initializing new instance of: org.jboss.seam.persistence.persistenceProvider
                                16:32:07,116 DEBUG [SeamVariableResolver] resolving name: contactHome
                                16:32:07,116 DEBUG [Contexts] found in conversation context: contactHome
                                16:32:07,116 DEBUG [SeamVariableResolver] resolved name to Seam component
                                16:32:07,116 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:07,116 DEBUG [Contexts] found in conversation context: entityManager
                                16:32:07,116 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:07,116 DEBUG [Component] trying to inject with hierarchical context search: facesMessages
                                16:32:07,116 DEBUG [Contexts] found in conversation context: facesMessages
                                16:32:07,116 DEBUG [Contexts] found in conversation context: org.jboss.seam.core.persistenceContexts
                                16:32:07,116 DEBUG [Contexts] found in conversation context: entityManager
                                16:32:07,116 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:07,116 DEBUG [Component] instantiating Seam component: org.jboss.seam.persistence.persistenceProvider
                                16:32:07,116 DEBUG [Component] initializing new instance of: org.jboss.seam.persistence.persistenceProvider
                                16:32:07,116 DEBUG [SeamVariableResolver] resolving name: contactHome
                                16:32:07,116 DEBUG [Contexts] found in conversation context: contactHome
                                16:32:07,116 DEBUG [SeamVariableResolver] resolved name to Seam component
                                16:32:07,116 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:07,116 DEBUG [Contexts] found in conversation context: entityManager
                                16:32:07,116 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:07,116 DEBUG [Component] trying to inject with hierarchical context search: facesMessages
                                16:32:07,116 DEBUG [Contexts] found in conversation context: facesMessages
                                16:32:07,116 DEBUG [Contexts] found in conversation context: org.jboss.seam.core.persistenceContexts
                                16:32:07,116 DEBUG [Contexts] found in conversation context: entityManager
                                16:32:07,116 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:07,116 DEBUG [Component] instantiating Seam component: org.jboss.seam.persistence.persistenceProvider
                                16:32:07,116 DEBUG [Component] initializing new instance of: org.jboss.seam.persistence.persistenceProvider
                                16:32:07,116 DEBUG [SeamVariableResolver] resolving name: contactHome
                                16:32:07,116 DEBUG [Contexts] found in conversation context: contactHome
                                16:32:07,116 DEBUG [SeamVariableResolver] resolved name to Seam component
                                16:32:07,116 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:07,116 DEBUG [Contexts] found in conversation context: entityManager
                                16:32:07,116 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:07,126 DEBUG [Component] trying to inject with hierarchical context search: facesMessages
                                16:32:07,126 DEBUG [Contexts] found in conversation context: facesMessages
                                16:32:07,126 DEBUG [Contexts] found in conversation context: org.jboss.seam.core.persistenceContexts
                                16:32:07,126 DEBUG [Contexts] found in conversation context: entityManager
                                16:32:07,126 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:07,126 DEBUG [Component] instantiating Seam component: org.jboss.seam.persistence.persistenceProvider
                                16:32:07,126 DEBUG [Component] initializing new instance of: org.jboss.seam.persistence.persistenceProvider
                                16:32:07,126 DEBUG [SeamVariableResolver] resolving name: contactHome
                                16:32:07,126 DEBUG [Contexts] found in conversation context: contactHome
                                16:32:07,126 DEBUG [SeamVariableResolver] resolved name to Seam component
                                16:32:07,126 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:07,126 DEBUG [Contexts] found in conversation context: entityManager
                                16:32:07,126 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:07,126 DEBUG [Component] trying to inject with hierarchical context search: facesMessages
                                16:32:07,126 DEBUG [Contexts] found in conversation context: facesMessages
                                16:32:07,126 DEBUG [Contexts] found in conversation context: org.jboss.seam.core.persistenceContexts
                                16:32:07,126 DEBUG [Contexts] found in conversation context: entityManager
                                16:32:07,126 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:07,126 DEBUG [Component] instantiating Seam component: org.jboss.seam.persistence.persistenceProvider
                                16:32:07,126 DEBUG [Component] initializing new instance of: org.jboss.seam.persistence.persistenceProvider
                                16:32:07,136 DEBUG [SeamVariableResolver] resolving name: contactHome
                                16:32:07,136 DEBUG [Contexts] found in conversation context: contactHome
                                16:32:07,136 DEBUG [SeamVariableResolver] resolved name to Seam component
                                16:32:07,136 DEBUG [Contexts] found in conversation context: entityManager
                                16:32:07,136 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:07,136 DEBUG [Component] trying to inject with hierarchical context search: facesMessages
                                16:32:07,136 DEBUG [Contexts] found in conversation context: facesMessages
                                16:32:07,136 DEBUG [Contexts] found in conversation context: org.jboss.seam.core.persistenceContexts
                                16:32:07,136 DEBUG [Contexts] found in conversation context: entityManager
                                16:32:07,136 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:07,136 DEBUG [Component] instantiating Seam component: org.jboss.seam.persistence.persistenceProvider
                                16:32:07,136 DEBUG [Component] initializing new instance of: org.jboss.seam.persistence.persistenceProvider
                                16:32:07,136 DEBUG [SeamVariableResolver] resolving name: contactHome
                                16:32:07,136 DEBUG [Contexts] found in conversation context: contactHome
                                16:32:07,136 DEBUG [SeamVariableResolver] resolved name to Seam component
                                16:32:07,136 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:07,136 DEBUG [Contexts] found in conversation context: entityManager
                                16:32:07,136 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:07,136 DEBUG [Component] trying to inject with hierarchical context search: facesMessages
                                16:32:07,136 DEBUG [Contexts] found in conversation context: facesMessages
                                16:32:07,136 DEBUG [Contexts] found in conversation context: org.jboss.seam.core.persistenceContexts
                                16:32:07,136 DEBUG [Contexts] found in conversation context: entityManager
                                16:32:07,136 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:07,136 DEBUG [Component] instantiating Seam component: org.jboss.seam.persistence.persistenceProvider
                                16:32:07,136 DEBUG [Component] initializing new instance of: org.jboss.seam.persistence.persistenceProvider
                                16:32:07,136 DEBUG [SeamVariableResolver] resolving name: contactHome
                                16:32:07,136 DEBUG [Contexts] found in conversation context: contactHome
                                16:32:07,136 DEBUG [SeamVariableResolver] resolved name to Seam component
                                16:32:07,136 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:07,136 DEBUG [Contexts] found in conversation context: entityManager
                                16:32:07,136 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:07,136 DEBUG [Component] trying to inject with hierarchical context search: facesMessages
                                16:32:07,136 DEBUG [Contexts] found in conversation context: facesMessages
                                16:32:07,136 DEBUG [Contexts] found in conversation context: org.jboss.seam.core.persistenceContexts
                                16:32:07,136 DEBUG [Contexts] found in conversation context: entityManager
                                16:32:07,136 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:07,136 DEBUG [Component] instantiating Seam component: org.jboss.seam.persistence.persistenceProvider
                                16:32:07,136 DEBUG [Component] initializing new instance of: org.jboss.seam.persistence.persistenceProvider
                                16:32:07,146 DEBUG [SeamVariableResolver] resolving name: contactHome
                                16:32:07,146 DEBUG [Contexts] found in conversation context: contactHome
                                16:32:07,146 DEBUG [SeamVariableResolver] resolved name to Seam component
                                16:32:07,146 DEBUG [Contexts] found in conversation context: entityManager
                                16:32:07,146 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:07,146 DEBUG [Component] trying to inject with hierarchical context search: facesMessages
                                16:32:07,146 DEBUG [Contexts] found in conversation context: facesMessages
                                16:32:07,146 DEBUG [Contexts] found in conversation context: org.jboss.seam.core.persistenceContexts
                                16:32:07,146 DEBUG [Contexts] found in conversation context: entityManager
                                16:32:07,146 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:07,146 DEBUG [Component] instantiating Seam component: org.jboss.seam.persistence.persistenceProvider
                                16:32:07,146 DEBUG [Component] initializing new instance of: org.jboss.seam.persistence.persistenceProvider
                                16:32:07,156 DEBUG [SeamVariableResolver] resolving name: contactHome
                                16:32:07,156 DEBUG [Contexts] found in conversation context: contactHome
                                16:32:07,156 DEBUG [SeamVariableResolver] resolved name to Seam component
                                16:32:07,156 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:07,156 DEBUG [Contexts] found in conversation context: entityManager
                                16:32:07,156 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:07,156 DEBUG [Component] trying to inject with hierarchical context search: facesMessages
                                16:32:07,156 DEBUG [Contexts] found in conversation context: facesMessages
                                16:32:07,156 DEBUG [Contexts] found in conversation context: org.jboss.seam.core.persistenceContexts
                                16:32:07,156 DEBUG [Contexts] found in conversation context: entityManager
                                16:32:07,156 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:07,156 DEBUG [Component] instantiating Seam component: org.jboss.seam.persistence.persistenceProvider
                                16:32:07,156 DEBUG [Component] initializing new instance of: org.jboss.seam.persistence.persistenceProvider
                                16:32:07,156 DEBUG [SeamVariableResolver] resolving name: contactHome
                                16:32:07,156 DEBUG [Contexts] found in conversation context: contactHome
                                16:32:07,156 DEBUG [SeamVariableResolver] resolved name to Seam component
                                16:32:07,156 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:07,156 DEBUG [Contexts] found in conversation context: entityManager
                                16:32:07,156 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:07,156 DEBUG [Component] trying to inject with hierarchical context search: facesMessages
                                16:32:07,156 DEBUG [Contexts] found in conversation context: facesMessages
                                16:32:07,156 DEBUG [Contexts] found in conversation context: org.jboss.seam.core.persistenceContexts
                                16:32:07,156 DEBUG [Contexts] found in conversation context: entityManager
                                16:32:07,156 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:07,156 DEBUG [Component] instantiating Seam component: org.jboss.seam.persistence.persistenceProvider
                                16:32:07,156 DEBUG [Component] initializing new instance of: org.jboss.seam.persistence.persistenceProvider
                                16:32:07,156 DEBUG [SeamVariableResolver] resolving name: contactHome
                                16:32:07,156 DEBUG [Contexts] found in conversation context: contactHome
                                16:32:07,156 DEBUG [SeamVariableResolver] resolved name to Seam component
                                16:32:07,156 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:07,156 DEBUG [Contexts] found in conversation context: entityManager
                                16:32:07,156 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:07,156 DEBUG [Component] trying to inject with hierarchical context search: facesMessages
                                16:32:07,156 DEBUG [Contexts] found in conversation context: facesMessages
                                16:32:07,156 DEBUG [Contexts] found in conversation context: org.jboss.seam.core.persistenceContexts
                                16:32:07,166 DEBUG [Contexts] found in conversation context: entityManager
                                16:32:07,166 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:07,166 DEBUG [Component] instantiating Seam component: org.jboss.seam.persistence.persistenceProvider
                                16:32:07,166 DEBUG [Component] initializing new instance of: org.jboss.seam.persistence.persistenceProvider
                                16:32:07,166 DEBUG [SeamVariableResolver] resolving name: contactHome
                                16:32:07,166 DEBUG [Contexts] found in conversation context: contactHome
                                16:32:07,166 DEBUG [SeamVariableResolver] resolved name to Seam component
                                16:32:07,166 DEBUG [Contexts] found in conversation context: entityManager
                                16:32:07,166 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:07,166 DEBUG [Component] trying to inject with hierarchical context search: facesMessages
                                16:32:07,166 DEBUG [Contexts] found in conversation context: facesMessages
                                16:32:07,166 DEBUG [Contexts] found in conversation context: org.jboss.seam.core.persistenceContexts
                                16:32:07,166 DEBUG [Contexts] found in conversation context: entityManager
                                16:32:07,166 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:07,166 DEBUG [Component] instantiating Seam component: org.jboss.seam.persistence.persistenceProvider
                                16:32:07,166 DEBUG [Component] initializing new instance of: org.jboss.seam.persistence.persistenceProvider
                                16:32:07,166 DEBUG [Events] Processing event:org.jboss.seam.preSetVariable.org.jboss.seam.core.pageParameters
                                16:32:07,166 DEBUG [Events] Processing event:org.jboss.seam.postSetVariable.org.jboss.seam.core.pageParameters
                                16:32:07,166 DEBUG [Manager] Discarding conversation state: 3
                                16:32:07,166 DEBUG [Events] Processing event:org.jboss.seam.preRemoveVariable.org.jboss.seam.core.manager.conversationId
                                16:32:07,166 DEBUG [Events] Processing event:org.jboss.seam.postRemoveVariable.org.jboss.seam.core.manager.conversationId
                                16:32:07,206 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:07,206 DEBUG [AbstractSeamPhaseListener] committing transaction after phase: RENDER_RESPONSE(6)
                                16:32:07,206 DEBUG [Naming] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
                                16:32:07,206 DEBUG [Lifecycle] After render response, destroying contexts
                                16:32:07,206 DEBUG [Lifecycle] destroying business process context
                                16:32:07,206 DEBUG [Events] Processing event:org.jboss.seam.preDestroyContext.BUSINESS_PROCESS
                                16:32:07,206 DEBUG [Events] Processing event:org.jboss.seam.postDestroyContext.BUSINESS_PROCESS
                                16:32:07,206 DEBUG [Lifecycle] destroying conversation context
                                16:32:07,317 DEBUG [Events] Processing event:org.jboss.seam.preDestroyContext.CONVERSATION
                                16:32:07,317 DEBUG [Contexts] destroying: contactHome
                                16:32:07,317 DEBUG [Events] Processing event:org.jboss.seam.preDestroy.contactHome
                                16:32:07,317 DEBUG [Contexts] destroying: org.jboss.seam.core.persistenceContexts
                                16:32:07,317 DEBUG [Events] Processing event:org.jboss.seam.preDestroy.org.jboss.seam.core.persistenceContexts
                                16:32:07,317 DEBUG [Contexts] destroying: facesMessages
                                16:32:07,317 DEBUG [Events] Processing event:org.jboss.seam.preDestroy.facesMessages
                                16:32:07,317 DEBUG [Contexts] destroying: conversation
                                16:32:07,317 DEBUG [Events] Processing event:org.jboss.seam.preDestroy.conversation
                                16:32:07,317 DEBUG [Contexts] destroying: exampleContact
                                16:32:07,317 DEBUG [Events] Processing event:org.jboss.seam.preDestroy.exampleContact
                                16:32:07,317 DEBUG [Contexts] destroying: contact
                                16:32:07,317 DEBUG [Contexts] destroying: entityManager
                                16:32:07,317 DEBUG [Events] Processing event:org.jboss.seam.preDestroy.entityManager
                                16:32:07,317 DEBUG [ManagedPersistenceContext] destroying seam managed persistence context for persistence unit: java:/fiatEntityManagerFactory
                                16:32:07,317 DEBUG [Events] Processing event:org.jboss.seam.postDestroyContext.CONVERSATION
                                16:32:07,327 DEBUG [Lifecycle] flushing server-side conversation context
                                16:32:07,327 DEBUG [Lifecycle] flushing session context
                                16:32:07,327 DEBUG [Lifecycle] destroying event context
                                16:32:07,327 DEBUG [Events] Processing event:org.jboss.seam.preDestroyContext.EVENT
                                16:32:07,327 DEBUG [Contexts] destroying: contactAction
                                16:32:07,327 DEBUG [Events] Processing event:org.jboss.seam.preDestroy.contactAction
                                16:32:07,327 DEBUG [Contexts] destroying: facelets.Encoding
                                16:32:07,327 DEBUG [Contexts] destroying: org.jboss.seam.core.manager
                                16:32:07,327 DEBUG [Events] Processing event:org.jboss.seam.preDestroy.org.jboss.seam.core.manager
                                16:32:07,327 DEBUG [Contexts] destroying: org.apache.myfaces.application.jsp.JspStateManagerImpl.SERIALIZED_VIEW
                                16:32:07,327 DEBUG [Contexts] destroying: contacts
                                16:32:07,327 DEBUG [Events] Processing event:org.jboss.seam.preDestroy.contacts
                                16:32:07,327 DEBUG [Contexts] destroying: com.sun.facelets.legacy.ELCONTEXT
                                16:32:07,327 DEBUG [Events] Processing event:org.jboss.seam.postDestroyContext.EVENT
                                16:32:07,327 DEBUG [Lifecycle] <<< End web request
                                



                                • 13. Re: how can I do optimistic locking with crud framework?
                                  Gavin King Master

                                   

                                  16:32:06,876 INFO [ContactAction] Conversation begun by beginEdit()
                                  16:32:06,876 INFO [ContactAction] Conversation begun by beginEdit()


                                  I don't see any log message from ConversationInterceptor saying "Beginning long-running conversation", so apparently Seam is definitely not beginning the conversation.

                                  What does the beginEdit() method look like?


                                  • 14. Re: how can I do optimistic locking with crud framework?
                                    Gavin King Master

                                    Ahah. Read the JavaDoc for @Begin!

                                    And then change:

                                    @Begin
                                     public String beginEdit() {
                                     log.info("Conversation begun by beginEdit()");
                                     return null;
                                     }


                                    To:

                                    @Begin
                                     public String beginEdit() {
                                     log.info("Conversation begun by beginEdit()");
                                     return "success";
                                     }


                                    1 2 Previous Next