I must be missing something, because I am sure this has been answered, but I can't seem to find the answer.
My scenario: I have the typical situation where inside an EJB call, I do some work and update my DB via a local resource (MSSQL), and then place a messasge on a JMS queue. I am using java:/JmsXA as my lookup for the QueueConnectionFactory.
Given this scenario, and the fact that 4.0 has the Last Resource Gambit, I would assume that this would work great. But, I keep getting the 'Prepare called on a local tx' warning.
After tracking it down, I realized that it is not my MSSQL DS that is causing the issue (the gamit algorithm skips it fine), but it is in fact DefaultDS that is the issue -- which makes sense. JBossMQ has to save it's information somewhere, and is using HSQL as the default. And that connection is a local resource as well.
After reading the FAQ's, I realize that I need to change the db that JBossMQ is using to persist it's information. I am happy to change it to use my MSSQL Datasource.
But, am I not going to run into the same issue? In this scenario, I am always going to have 3 resources: my JDBC work, MQ's JDBC work, and the MQ Spy resource.
Is there a proper way to configure it so that I can allow my MSSQL DS to be the only local resource, and thus allow the LRG algorithm to work? If I tell MQ to use my MSSQL DS, will it then only count as one resource, and be the allowed local resource in an XA TX?