[jboss-user] [Messaging, JMS & JBossMQ] - XA trasactions over a remote MQ queue Jboss 3.2.6
tnine
do-not-reply at jboss.com
Wed Sep 13 12:15:57 EDT 2006
I?m having some issue reading transitionally from a remote JBoss MQ Queue. I have configured the remote queue with the configuration defined here.
http://wiki.jboss.org/wiki/Wiki.jsp?page=HowDoIConfigureTheJMSResourceAdapterToUseARemoteConnectionFactory
With the exception of the following change in our ?ds.xml file
| <mbean code="org.jboss.jms.jndi.JMSProviderLoader"
| name="jboss.mq:service=JMSProviderLoader,name=RemoteJMSProvider,server=sun9.ata.com">
| <attribute name="ProviderName">ATADevJMSProvider</attribute>
| <attribute name="ProviderAdapterClass">org.jboss.jms.jndi.JNDIProviderAdapter</attribute>
| <!-- The queue connection factory -->
| <attribute name="QueueFactoryRef">XAConnectionFactory</attribute>
| <!-- The topic factory -->
| <attribute name="TopicFactoryRef">XAConnectionFactory</attribute>
| <!-- Uncomment to use HAJNDI to access JMS -->
| <attribute name="Properties">
| java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
| java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
| java.naming.provider.url=jnp://sun9:7045
| </attribute>
| </mbean>
|
We have the following code in our MDB
| public void onMessage(Message message) {
| // MessageDrivenContext
|
| try {
| getDelegator().delegate(message);
| } catch (MessageDelegationException e) {
| LOGGER.fatal(e);
| // roll back the transaction
| if (!this.getMessageDrivenContext().getRollbackOnly()) {
| this.getMessageDrivenContext().setRollbackOnly();
| }
| }
|
| }
|
And this ejb-jar.xml
| <message-driven>
| <description>
| Bean to access messages from cats queues
| </description>
| <display-name>CATSMessageAccess</display-name>
|
| <ejb-name>ejb/CATSMessageAccess</ejb-name>
|
| <ejb-class>
| com.ata.utilities.mdd.MessageAccessBean
| </ejb-class>
|
| <transaction-type>Container</transaction-type>
| <acknowledge-mode>Auto-acknowledge</acknowledge-mode>
|
| <message-driven-destination>
| <destination-type>javax.jms.Queue</destination-type>
| </message-driven-destination>
|
| </message-driven>
|
|
If the POJO code fails by throwing an exception and the message tries to roll back the transaction, I get this exception and the message is removed from the queue on the remote server.
| 21:10:02,765 INFO [STDOUT] 21:10:02,765 INFO [SessionFactoryImpl] closing
| 21:10:02,765 ERROR [LogInterceptor] RuntimeException in method: public abstract void javax.jms.Messa
| geListener.onMessage(javax.jms.Message)
| java.lang.IllegalStateException: getRollbackOnly must only be called in the context of a transaction
| (EJB 2.0 - 15.5.1)
| at org.jboss.ejb.MessageDrivenEnterpriseContext$MessageDrivenContextImpl.getRollbackOnly(MessageDri
| venEnterpriseContext.java:192)
| at com.ata.utilities.mdd.MessageAccessBean.onMessage(MessageAccessBean.java:78)
| 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:324)
| at org.jboss.ejb.MessageDrivenContainer$ContainerInterceptor.invoke(MessageDrivenContainer.java:458
| )
|
|
I thought I should be running in an XA container transaction, so when I roll back on my MDB, my local JDBC transactions do not commit (that works), and the read from the remote queue should roll back. Why am I not running in a transaction, and why does my remote queue lose the message? I?m assuming once I fix the local transaction problem, that the reading from the queue will succeed. Any help would be greatly apprecaited. I can't seem to find anything in the doc that would explain something I've missed. Reading from the queue works perfectly, it just doesn't happen in a transaction as expected.
Thanks,
Todd
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3971304#3971304
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3971304
More information about the jboss-user
mailing list