I have. http://publib.boulder.ibm.com/infocenter/wmqv6/v6r0/index.jsp?topic=/com.ibm.mq.amqzao.doc/fm12190_.htm
It was no help. I'm not running on z/OS, therefore the suggested action is: 1) Link the application with the correct libraries (threaded or nonthreaded). I'm running under WAS using the "WebSphere MQ messaging provider " which has no configuration options. I also have other Spring applications running successfully on this environment. 2) Remove from the application the call that is not supported. It's failing on a commit. Can't really remove that call :-) I mainly wanted to know if anyone could see something obviously wrong with what I was trying to do. I've traced out the transactions and it looks ok to me. I've traced out MQ and the XACOMMIT call is successful, but the MQCMIT call is failing. I'm leaning towards this being a Websphere MQ issue. I'm going to raise a support request when I get back from holidays. Thanks, Mark Mark Borner Java Developer - ZStream Xpress From: Claus Ibsen <claus.ib...@gmail.com> To: users@camel.apache.org Date: 07/12/2010 07:36 PM Subject: Re: Camel Websphere MQ Error 2012 Obviously you should check out first with IBM what that MQ error code means. On Tue, Dec 7, 2010 at 6:03 AM, Mark Borner <mark.bor...@zurich.com.au>wrote: > > Hi all: > > I've been reading up on how to configure Camel for use under Websphere and > Websphere MQ. I've gotten things working except for a nagging error: > com.ibm.mq.MQException: MQJE001: Completion Code 2, Reason 2012 > > The route that is having the problem is reading from a DB and putting the > messages onto a queue: > > > from("jpa:au.com.zurich.phoenix.i90.entity.ExportMessage?consumeDelete=false&transactionManager=#transactionManager&consumer.delay=30000&consumer.namedQuery=received") > .routeId("ExportQueueProducerRoute") > .transacted() > .process(new Processor() { > private XMLOutputter outputter = new > XMLOutputter(Format.getCompactFormat()); > > public void process(Exchange exchange) throws Exception { > ExportMessage exportMessage = > exchange.getIn().getBody(ExportMessage.class); > // Set the status to Queued so the message doesn't get picked > up again! > exportMessage.setStatus(MessageStatuses.QUEUED); > // Set out body to the policy XML > XmlAttachment attachment = (XmlAttachment) > exportMessage.getAttachments().iterator().next(); > > exchange.getIn().setBody(outputter.outputString(attachment.getDocument())); > // Set all the headers so they end up on the queued message > exchange.getIn().setHeader(TRANSACTION_ID, > exportMessage.getTransactionId()); > exchange.getIn().setHeader(INTERNAL_ID, > exportMessage.getInternalId()); > } > }) > .to(ExchangePattern.InOnly, > "jms:queue:exportQueue?taskExecutor=#taskExecutor&transactionManager=#transactionManager&transacted=true&acknowledgementModeName=TRANSACTED&cacheLevelName=CACHE_NONE"); > > When the transaction started by the JPA component commits, it throws this > stack trace: > > [7/12/10 10:40:46:841 EST] 000000a1 RegisteredSyn E WTRN0074E: Exception > caught from after_completion synchronization operation: > org.springframework.jms.connection.SynchedLocalTransactionFailedException: > Local JMS transaction failed to commit; nested exception is > javax.jms.JMSException: MQJMS2009: MQQueueManager.commit() failed; nested > exception is com.ibm.mq.MQException: MQJE001: Completion Code 2, Reason 2012 > at > org.springframework.jms.connection.ConnectionFactoryUtils$JmsResourceSynchronization.processResourceAfterCommit(ConnectionFactoryUtils.java:407) > at > org.springframework.jms.connection.ConnectionFactoryUtils$JmsResourceSynchronization.processResourceAfterCommit(ConnectionFactoryUtils.java:1) > at > org.springframework.transaction.support.ResourceHolderSynchronization.afterCommit(ResourceHolderSynchronization.java:79) > at > org.springframework.transaction.support.TransactionSynchronizationUtils.invokeAfterCommit(TransactionSynchronizationUtils.java:133) > at > org.springframework.transaction.jta.JtaAfterCompletionSynchronization.afterCompletion(JtaAfterCompletionSynchronization.java:59) > at > com.ibm.ws.uow.ComponentContextSynchronizationWrapper.afterCompletion(ComponentContextSynchronizationWrapper.java:84) > at > com.ibm.ws.Transaction.JTA.RegisteredSyncs.distributeAfter(RegisteredSyncs.java:424) > at > com.ibm.ws.Transaction.JTA.TransactionImpl.distributeAfter(TransactionImpl.java:3890) > at > com.ibm.ws.Transaction.JTA.TransactionImpl.postCompletion(TransactionImpl.java:3869) > at > com.ibm.ws.Transaction.JTA.TransactionImpl.internalCommit(TransactionImpl.java:2673) > at > com.ibm.ws.Transaction.JTA.TransactionImpl.stage2CommitProcessing(TransactionImpl.java:1736) > at > com.ibm.ws.Transaction.JTA.TransactionImpl.processCommit(TransactionImpl.java:1616) > at > com.ibm.ws.Transaction.JTA.TransactionImpl.commit(TransactionImpl.java:1547) > at > com.ibm.ws.Transaction.JTA.TranManagerImpl.commit(TranManagerImpl.java:247) > at > com.ibm.ws.Transaction.JTA.TranManagerSet.commit(TranManagerSet.java:166) > at > com.ibm.ws.uow.UOWManagerImpl.uowCommit(UOWManagerImpl.java:1055) > at com.ibm.ws.uow.UOWManagerImpl.uowEnd(UOWManagerImpl.java:1025) > at > com.ibm.ws.uow.UOWManagerImpl.runUnderNewUOW(UOWManagerImpl.java:975) > at > com.ibm.ws.uow.UOWManagerImpl.runUnderUOW(UOWManagerImpl.java:509) > at > org.springframework.transaction.jta.WebSphereUowTransactionManager.execute(WebSphereUowTransactionManager.java:281) > at > org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:124) > at > org.apache.camel.component.jpa.JpaTemplateTransactionStrategy.execute(JpaTemplateTransactionStrategy.java:78) > *at > org.apache.camel.component.jpa.JpaConsumer.poll(JpaConsumer.java:79)* > at > org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:97) > at > java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:432) > at > java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:295) > at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150) > at > java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:80) > at > java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:157) > at > java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:181) > at > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690) > at java.lang.Thread.run(Thread.java:810) > at > au.com.zurich.phoenix.i90.strategy.WebsphereExecutorServiceStrategy$WasWork.run(WebsphereExecutorServiceStrategy.java:313) > at > com.ibm.ws.asynchbeans.J2EEContext$RunProxy.run(J2EEContext.java:257) > at > java.security.AccessController.doPrivileged(AccessController.java:219) > at javax.security.auth.Subject.doAs(Subject.java:495) > at > com.ibm.websphere.security.auth.WSSubject.doAs(WSSubject.java:118) > at > com.ibm.ws.asynchbeans.J2EEContext$DoAsProxy.run(J2EEContext.java:328) > at > java.security.AccessController.doPrivileged(AccessController.java:246) > at com.ibm.ws.asynchbeans.J2EEContext.run(J2EEContext.java:1111) > at > com.ibm.ws.asynchbeans.WorkWithExecutionContextImpl.go(WorkWithExecutionContextImpl.java:195) > at > com.ibm.ws.asynchbeans.CJWorkItemImpl.run(CJWorkItemImpl.java:187) > at java.lang.Thread.run(Thread.java:810) > Caused by: javax.jms.JMSException: MQJMS2009: MQQueueManager.commit() > failed > at > com.ibm.mq.jms.services.ConfigEnvironment.newException(ConfigEnvironment.java:622) > at com.ibm.mq.jms.MQSession.commitQ(MQSession.java:3793) > at com.ibm.mq.jms.MQSession.commit(MQSession.java:761) > at > com.ibm.ejs.jms.JMSSessionHandle.commit(JMSSessionHandle.java:658) > at > org.springframework.jms.connection.JmsResourceHolder.commitAll(JmsResourceHolder.java:181) > at > org.springframework.jms.connection.ConnectionFactoryUtils$JmsResourceSynchronization.processResourceAfterCommit(ConnectionFactoryUtils.java:404) > ... 43 more > ---- Begin backtrace for Nested Throwables > com.ibm.mq.MQException: MQJE001: Completion Code 2, Reason 2012 > at com.ibm.mq.MQQueueManager.commit(MQQueueManager.java:2220) > at com.ibm.mq.jms.MQSession.commitQ(MQSession.java:3769) > at com.ibm.mq.jms.MQSession.commit(MQSession.java:761) > at > com.ibm.ejs.jms.JMSSessionHandle.commit(JMSSessionHandle.java:658) > at > org.springframework.jms.connection.JmsResourceHolder.commitAll(JmsResourceHolder.java:181) > at > org.springframework.jms.connection.ConnectionFactoryUtils$JmsResourceSynchronization.processResourceAfterCommit(ConnectionFactoryUtils.java:404) > at > org.springframework.jms.connection.ConnectionFactoryUtils$JmsResourceSynchronization.processResourceAfterCommit(ConnectionFactoryUtils.java:1) > at > org.springframework.transaction.support.ResourceHolderSynchronization.afterCommit(ResourceHolderSynchronization.java:79) > at > org.springframework.transaction.support.TransactionSynchronizationUtils.invokeAfterCommit(TransactionSynchronizationUtils.java:133) > at > org.springframework.transaction.jta.JtaAfterCompletionSynchronization.afterCompletion(JtaAfterCompletionSynchronization.java:59) > at > com.ibm.ws.uow.ComponentContextSynchronizationWrapper.afterCompletion(ComponentContextSynchronizationWrapper.java:84) > at > com.ibm.ws.Transaction.JTA.RegisteredSyncs.distributeAfter(RegisteredSyncs.java:424) > at > com.ibm.ws.Transaction.JTA.TransactionImpl.distributeAfter(TransactionImpl.java:3890) > at > com.ibm.ws.Transaction.JTA.TransactionImpl.postCompletion(TransactionImpl.java:3869) > at > com.ibm.ws.Transaction.JTA.TransactionImpl.internalCommit(TransactionImpl.java:2673) > at > com.ibm.ws.Transaction.JTA.TransactionImpl.stage2CommitProcessing(TransactionImpl.java:1736) > at > com.ibm.ws.Transaction.JTA.TransactionImpl.processCommit(TransactionImpl.java:1616) > at > com.ibm.ws.Transaction.JTA.TransactionImpl.commit(TransactionImpl.java:1547) > at > com.ibm.ws.Transaction.JTA.TranManagerImpl.commit(TranManagerImpl.java:247) > at > com.ibm.ws.Transaction.JTA.TranManagerSet.commit(TranManagerSet.java:166) > at > com.ibm.ws.uow.UOWManagerImpl.uowCommit(UOWManagerImpl.java:1055) > at com.ibm.ws.uow.UOWManagerImpl.uowEnd(UOWManagerImpl.java:1025) > at > com.ibm.ws.uow.UOWManagerImpl.runUnderNewUOW(UOWManagerImpl.java:975) > at > com.ibm.ws.uow.UOWManagerImpl.runUnderUOW(UOWManagerImpl.java:509) > at > org.springframework.transaction.jta.WebSphereUowTransactionManager.execute(WebSphereUowTransactionManager.java:281) > at > org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:124) > at > org.apache.camel.component.jpa.JpaTemplateTransactionStrategy.execute(JpaTemplateTransactionStrategy.java:78) > at > org.apache.camel.component.jpa.JpaConsumer.poll(JpaConsumer.java:79) > at > org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:97) > at > java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:432) > at > java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:295) > at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150) > at > java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:80) > at > java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:157) > at > java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:181) > at > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690) > at java.lang.Thread.run(Thread.java:810) > at > au.com.zurich.phoenix.i90.strategy.WebsphereExecutorServiceStrategy$WasWork.run(WebsphereExecutorServiceStrategy.java:313) > at > com.ibm.ws.asynchbeans.J2EEContext$RunProxy.run(J2EEContext.java:257) > at > java.security.AccessController.doPrivileged(AccessController.java:219) > at javax.security.auth.Subject.doAs(Subject.java:495) > at > com.ibm.websphere.security.auth.WSSubject.doAs(WSSubject.java:118) > at > com.ibm.ws.asynchbeans.J2EEContext$DoAsProxy.run(J2EEContext.java:328) > at > java.security.AccessController.doPrivileged(AccessController.java:246) > at com.ibm.ws.asynchbeans.J2EEContext.run(J2EEContext.java:1111) > at > com.ibm.ws.asynchbeans.WorkWithExecutionContextImpl.go(WorkWithExecutionContextImpl.java:195) > at > com.ibm.ws.asynchbeans.CJWorkItemImpl.run(CJWorkItemImpl.java:187) > at java.lang.Thread.run(Thread.java:810) > > Funny thing is that the message DOES end up on the queue! So I'm not sure > why the exception is being thrown. > > Here's my Spring config: > > <jee:jndi-lookup id="connectionFactory" jndi-name="jms/conn/i90/gtwy" > expected-type="javax.jms.ConnectionFactory" > resource-ref="true"/> > > <jee:jndi-lookup id="exportQueue" jndi-name="jms/dest/i90/gtwy/export" > expected-type="javax.jms.Destination" > resource-ref="true"/> > > <jee:jndi-lookup id="deadLetterQueue" jndi-name="jms/dest/i90/gtwy/dlq" > expected-type="javax.jms.Destination" > resource-ref="true"/> > > <bean id="taskExecutor" > class="au.com.zurich.phoenix.gateway.jms.WorkManagerTaskExecutorFactoryBean"> > <property name="workManagerName" value="wm/default"/> > </bean> > > <bean id="destinationResolver" > class="org.springframework.jms.support.destination.BeanFactoryDestinationResolver"/> > > <tx:jta-transaction-manager /> > > Here's my level of code: > > Camel 2.5.0 > Spring 3.0.5.RELEASE (I've bumped up this version due to a bug that was > fixed around CACHE_NONE) > Websphere 6.1.0.25 > Websphere MQ 6.0.2.1 > > I have other Spring applications (albeit v2.5.6) working successfully in > this environment with JMS and Websphere MQ. So it leads me to believe I > don't have something setup correctly in Camel. > > Does anyone have a suggestion on what I can change to get rid of this > error? > > Thanks, > Mark > > Mark Borner > Java Developer - ZStream Xpress > > > > > ---- > This email is intended for the named recipient only. It may contain > information which is confidential, commercially sensitive, or > copyright. If you are not the intended recipient you must not > reproduce or distribute any part of the email, disclose its contents, > or take any action in reliance. If you have received this email in > error, please contact the sender and delete the message. It is your > responsibility to scan this email and any attachments for viruses and > other defects. To the extent permitted by law, Zurich and its > associates will not be liable for any loss or damage arising in any > way from this communication including any file attachments. We may > monitor email you send to us, either as a reply to this email or any > email you send to us, to confirm our systems are protected and for > compliance with company policies. Although we take reasonable > precautions to protect the confidentiality of our email systems, we > do not warrant the confidentiality or security of email or > attachments we receive. > > -- Claus Ibsen ----------------- FuseSource Email: cib...@fusesource.com Web: http://fusesource.com Twitter: davsclaus Blog: http://davsclaus.blogspot.com/ Author of Camel in Action: http://www.manning.com/ibsen/ ---- This email is intended for the named recipient only. It may contain information which is confidential, commercially sensitive, or copyright. If you are not the intended recipient you must not reproduce or distribute any part of the email, disclose its contents, or take any action in reliance. If you have received this email in error, please contact the sender and delete the message. It is your responsibility to scan this email and any attachments for viruses and other defects. To the extent permitted by law, Zurich and its associates will not be liable for any loss or damage arising in any way from this communication including any file attachments. We may monitor email you send to us, either as a reply to this email or any email you send to us, to confirm our systems are protected and for compliance with company policies. Although we take reasonable precautions to protect the confidentiality of our email systems, we do not warrant the confidentiality or security of email or attachments we receive.