I found a (very) temporary workaround to the transaction-still-there: don't use
the SeamExtendedManagedPersistencePhaseListener.
I had somewhere a servlet filter adding transactional behaviour to http
requests. It basicly wraps a transaction begin/commit around an http request,
rolling the transaction back on exceptions. I just put this servlet on top of
the SeamServlet and used SeamPhaseListener instead of the extended one. It
works more or less (didn't try with jBPM), but please don't ask me exactly why.
Gavin, I see there is a SeamTransactionManagedPersistencePhaseListener, which
sounds close the the temporary kludge I applied. I would like to give it a try,
but it seems to me that's not referenced in any doc. Defining it as a
PhaseListener in my app, I got this:
| 2006-04-28 15:57:25,921 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-04-28 15:57:25,937 DEBUG
[org.jboss.seam.jsf.SeamTransactionManagedPersistencePhaseListener] Starting
transaction prior to RESTORE_VIEW phase
| 2006-04-28 15:57:25,937 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-04-28 15:57:25,953 DEBUG [org.jboss.seam.contexts.Lifecycle] >>> Begin
web request
| 2006-04-28 15:57:25,968 DEBUG [org.jboss.seam.contexts.Lifecycle] Session
started
| 2006-04-28 15:57:26,046 DEBUG [org.jboss.seam.Component] instantiating Seam
component: localeSelector
| 2006-04-28 15:57:26,046 DEBUG
[org.jboss.seam.jsf.SeamTransactionManagedPersistencePhaseListener] Flushing
persistence contexts after INVOKE_APPLICATION phase
| 2006-04-28 15:57:26,062 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-04-28 15:57:26,109 ERROR [org.jboss.seam.servlet.SeamExceptionFilter]
uncaught exception handled by Seam
| javax.servlet.ServletException: Could not flush to database
| at javax.faces.webapp.FacesServlet.service(FacesServlet.java:152)
| at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
| at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
| at
it.mycomp.myapp.web.filter.ClientCacheDisableFilter.doFilter(ClientCacheDisableFilter.java:43)
| at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
| at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
| at
org.jboss.seam.servlet.SeamRedirectFilter.doFilter(SeamRedirectFilter.java:23)
| at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
| at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
| at
org.jboss.seam.servlet.SeamExceptionFilter.doFilter(SeamExceptionFilter.java:45)
| 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.CustomPrincipalValve.invoke(CustomPrincipalValve.java:54)
| at
org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:174)
| at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432)
| 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:595)
| 2006-04-28 15:57:26,281 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-04-28 15:57:26,296 INFO [org.jboss.seam.servlet.SeamExceptionFilter]
killing transaction
| 2006-04-28 15:57:26,296 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-04-28 15:57:26,312 DEBUG [org.jboss.seam.contexts.Lifecycle] After
request, destroying contexts
| 2006-04-28 15:57:26,328 DEBUG [org.jboss.seam.contexts.Lifecycle]
destroying event context
| 2006-04-28 15:57:26,328 DEBUG [org.jboss.seam.contexts.Lifecycle] <<< End
web request
| 2006-04-28 15:57:26,328 ERROR
[org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/e-sercenti].[Faces
Servlet]] Servlet.service() for servlet Faces Servlet threw exception
| java.lang.IllegalStateException: Could not flush to database
| at
org.jboss.seam.jsf.SeamTransactionManagedPersistencePhaseListener.flush(SeamTransactionManagedPersistencePhaseListener.java:130)
| at
org.jboss.seam.jsf.SeamTransactionManagedPersistencePhaseListener.afterPhase(SeamTransactionManagedPersistencePhaseListener.java:61)
| at
org.apache.myfaces.lifecycle.LifecycleImpl.informPhaseListenersAfter(LifecycleImpl.java:519)
| at
org.apache.myfaces.lifecycle.LifecycleImpl.restoreView(LifecycleImpl.java:178)
| at
org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:64)
| at javax.faces.webapp.FacesServlet.service(FacesServlet.java:137)
| at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
| at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
| at
it.mycomp.myapp.web.filter.ClientCacheDisableFilter.doFilter(ClientCacheDisableFilter.java:43)
| at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
| at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
| at
org.jboss.seam.servlet.SeamRedirectFilter.doFilter(SeamRedirectFilter.java:23)
| at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
| at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
| at
org.jboss.seam.servlet.SeamExceptionFilter.doFilter(SeamExceptionFilter.java:45)
| 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.CustomPrincipalValve.invoke(CustomPrincipalValve.java:54)
| at
org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:174)
| at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432)
| 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:595)
| Caused by: java.lang.NullPointerException
| at
org.jboss.seam.jsf.SeamTransactionManagedPersistencePhaseListener.flushEntityManager(SeamTransactionManagedPersistencePhaseListener.java:137)
| at
org.jboss.seam.jsf.SeamTransactionManagedPersistencePhaseListener.flush(SeamTransactionManagedPersistencePhaseListener.java:115)
| ... 31 more
|
And no page shown.
The problem seems to be related to the fact that
Contexts.getConversationContext() yields a null value.
Is SeamTransactionManagedPersistencePhaseListener a residual of early seam's
development phases or is supposed to be used? If this is the case, how are we
supposed to?
Thanks,
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3940158#3940158
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3940158
-------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
JBoss-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jboss-user