[jboss-user] [JBoss Seam] - Transaction Exception with Seam and EJB3

nloomis do-not-reply at jboss.com
Tue Feb 6 10:44:00 EST 2007


Hi,  I'm having problems synchronizing with the JTA Transaction Manager from within a Seam component when I come from an MDB that is not a Seam component.  I tried making the MDB a Seam component but Seam didn't like that (another issue I'm not concerned about at the moment because I switched it to use all EJB3 annotations).  Now, I keep getting a Transaction Exception when my stateless beans try to process.  The code is below.  I've tried changing the Transaction Attribute of the MDB to unsupported and the method attribute to Required but I still get the error.  Any help is greatly appreciated.

Exception
---------------------------------------------------------------------------
09:40:26,295 WARN  [TransactionImpl] Transaction TransactionImpl:XidImpl[FormatId=257, GlobalId=3Q9HWB1/14, BranchQual=, localId=14] timed out. status=STATUS_ACTIVE
09:40:28,185 INFO  [ProvisionSuccessBean] confirmProvisioning: 24243
09:40:36,888 INFO  [ProvisionSuccessBean] injected jbpmConext -> org.jbpm.JbpmContext at 1885947
09:40:45,560 ERROR [STDERR] org.hibernate.TransactionException: could not register synchronization with JTA TransactionManager
	at org.hibernate.jdbc.JDBCContext.registerSynchronizationIfPossible(JDBCContext.java:174)
	at org.hibernate.impl.SessionImpl.checkTransactionSynchStatus(SessionImpl.java:1850)
	at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:868)
	at org.hibernate.impl.SessionImpl.get(SessionImpl.java:808)
	at org.hibernate.impl.SessionImpl.get(SessionImpl.java:801)
	at org.jbpm.db.GraphSession.getProcessInstance(GraphSession.java:291)
	at org.jbpm.JbpmContext.getProcessInstance(JbpmContext.java:331)
	at com.evergreen.accesscontrol.impl.ProvisionSuccessBean.confirmProvisioning(ProvisionSuccessBean.java:67)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:112)
	at org.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:166)
	at org.jboss.seam.intercept.EJBInvocationContext.proceed(EJBInvocationContext.java:37)
	at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:55)
	at org.jboss.seam.interceptors.BijectionInterceptor.bijectTargetComponent(BijectionInterceptor.java:51)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at org.jboss.seam.util.Reflections.invoke(Reflections.java:18)
	at org.jboss.seam.intercept.Interceptor.aroundInvoke(Interceptor.java:169)
	at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:64)
	at org.jboss.seam.interceptors.OutcomeInterceptor.interceptOutcome(OutcomeInterceptor.java:23)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at org.jboss.seam.util.Reflections.invoke(Reflections.java:18)
	at org.jboss.seam.intercept.Interceptor.aroundInvoke(Interceptor.java:169)
	at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:64)
	at org.jboss.seam.interceptors.ConversationInterceptor.endOrBeginLongRunningConversation(ConversationInterceptor.java:51)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at org.jboss.seam.util.Reflections.invoke(Reflections.java:18)
	at org.jboss.seam.intercept.Interceptor.aroundInvoke(Interceptor.java:169)
	at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:64)
	at org.jboss.seam.interceptors.BusinessProcessInterceptor.manageBusinessProcessContext(BusinessProcessInterceptor.java:50)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at org.jboss.seam.util.Reflections.invoke(Reflections.java:18)
	at org.jboss.seam.intercept.Interceptor.aroundInvoke(Interceptor.java:169)
	at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:64)
	at org.jboss.seam.intercept.RootInterceptor.createSeamInvocationContext(RootInterceptor.java:144)
	at org.jboss.seam.intercept.RootInterceptor.invokeInContexts(RootInterceptor.java:129)
	at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:112)
	at org.jboss.seam.intercept.SessionBeanInterceptor.aroundInvoke(SessionBeanInterceptor.java:49)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at org.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:118)
	at org.jboss.ejb3.interceptor.EJB3InterceptorsInterceptor.invoke(EJB3InterceptorsInterceptor.java:63)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
	at org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invoke(TransactionScopedEntityManagerInterceptor.java:54)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
	at org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsInterceptor.java:47)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
	at org.jboss.aspects.tx.TxPolicy.invokeInCallerTx(TxPolicy.java:126)
	at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:201)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
	at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:76)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
	at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:62)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
	at org.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:78)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
	at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:47)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
	at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
	at org.jboss.ejb3.stateless.StatelessContainer.dynamicInvoke(StatelessContainer.java:227)
	at org.jboss.ejb3.remoting.IsLocalInterceptor.invoke(IsLocalInterceptor.java:59)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
	at org.jboss.ejb3.stateless.StatelessRemoteProxy.invoke(StatelessRemoteProxy.java:102)
	at $Proxy202.confirmProvisioning(Unknown Source)
	at com.evergreen.accesscontrol.impl.AccessControlReceiveMDB.onMessage(AccessControlReceiveMDB.java:77)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:112)
	at org.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:166)
	at org.jboss.seam.intercept.EJBInvocationContext.proceed(EJBInvocationContext.java:37)
	at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:97)
	at org.jboss.seam.intercept.SessionBeanInterceptor.aroundInvoke(SessionBeanInterceptor.java:49)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at org.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:118)
	at org.jboss.ejb3.interceptor.EJB3InterceptorsInterceptor.invoke(EJB3InterceptorsInterceptor.java:63)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocat
09:40:45,592 ERROR [STDERR] ion.java:101)
	at org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invoke(TransactionScopedEntityManagerInterceptor.java:54)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
	at org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsInterceptor.java:47)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
	at org.jboss.aspects.tx.TxPolicy.invokeInCallerTx(TxPolicy.java:126)
	at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:201)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
	at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:62)
	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
	at org.jboss.ejb3.mdb.MDB.localInvoke(MDB.java:865)
	at org.jboss.ejb3.mdb.MDB.localInvoke(MDB.java:844)
	at org.jboss.ejb3.mdb.MDB$MessageListenerImpl.onMessage(MDB.java:1074)
	at org.jboss.jms.asf.StdServerSession.onMessage(StdServerSession.java:266)
	at progress.message.jimpl.Session.dU_(Unknown Source)
	at progress.message.jimpl.Session.run(Unknown Source)
	at org.jboss.jms.asf.StdServerSession.run(StdServerSession.java:196)
	at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:743)
	at java.lang.Thread.run(Thread.java:595)
Caused by: javax.transaction.RollbackException: Already marked for rollback TransactionImpl:XidImpl[FormatId=257, GlobalId=3Q9HWB1/14, BranchQual=, localId=14]
	at org.jboss.tm.TransactionImpl.registerSynchronization(TransactionImpl.java:635)
	at org.hibernate.jdbc.JDBCContext.registerSynchronizationIfPossible(JDBCContext.java:164)
	... 115 more



MDB
------------------------------------------------------------------------------
@MessageDriven(activationConfig = {
		@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
		@ActivationConfigProperty(propertyName = "destination", propertyValue = "java:/SonicJMS/Queues/AccessControl/Receive"),
		@ActivationConfigProperty(propertyName = "providerAdapterJNDI", propertyValue = "java:/SonicJMSProvider"),
		@ActivationConfigProperty(propertyName = "useDLQ", propertyValue = "false") 
		}
)
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public class AccessControlReceiveMDB implements MessageListener {

	// public static final String ACCESS_DATA_XPATH = "declare namespace
	// ac='http://www.evergreeninvestments.com/accessControl' "
	// + "declare namespace xsi='http://www.w3.org/2001/XMLSchema-instance' "
	// + ".//ac:accessData";

	private Log log = LogFactory.getLog(AccessControlReceiveMDB.class);

	@EJB(beanName="ProvisionSuccessBean")
	private ProvisionSuccess successfulResponse;

	@EJB(beanName="ProvisionFailureBean")
	private ProvisionFailure failedResponse;

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.evergreen.accesscontrol.impl.AccessControlReceive#onMessage(javax.jms.Message)
	 */
	//@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
	public void onMessage(javax.jms.Message message) {
		log.info("Message Received!");
		log.info(message);
		try {
			// Grab Message Type from header.
			MessageTypes messageType = null;
			try {
				messageType = MessageTypes.valueOf(message
						.getStringProperty(MessageHeaderKeys.MessageType
								.toString()));
			} catch (Exception e) {
				messageType = MessageTypes.ProvisionFailure;
			}
			log.info("MessageType -> " + messageType.toString());

			Long processId = null;
			
			switch (messageType) {
			case ProvisionSuccess:
				// Grab process id from header.
				try {
					processId = Long.valueOf(message.getStringProperty(MessageHeaderKeys.ProcessId.toString()));
				} catch (Exception e) {
					throw new Exception("Missing Process Id in Message Header. " + e);
				}

				successfulResponse.confirmProvisioning(processId);
				break;


ProvisionSuccessBean - Stateless EJB
----------------------------------------------------------------------------------
@Stateless
@Name("provisionSuccess")
public class ProvisionSuccessBean implements ProvisionSuccess {

	@Logger
	protected Log log;

	@PersistenceContext(unitName = "controlDatabase")
	protected EntityManager em;

	@In(create = true)
	private JbpmContext jbpmContext;
	
	/*
	 * (non-Javadoc)
	 * 
	 * @see com.evergreen.accesscontrol.message.ProvisionResponse#confirmProvisioning()
	 */
	public String confirmProvisioning(Long processId) {
		log.info("confirmProvisioning: " + processId);

		// Load the JBPM context and the task
		log.info("injected jbpmConext -> " + jbpmContext);

		try {
			ProcessInstance process = jbpmContext.getProcessInstance(processId);   <--------- exception occurs here
			Long accessRequestId = (Long) process.getContextInstance()
					.getVariable("accessRequestId");



View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4011975#4011975

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4011975



More information about the jboss-user mailing list