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

Reply via email to