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 -> [EMAIL 
PROTECTED]
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
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to