Solace Community is getting a facelift!

On March 3rd we will be starting the process of migrating Solace Community to a new platform. As a result, Solace Community will go in to a temporary read-only state. You will still be able to come onto Solace Community and search through posts to find answers, but you won't be able to ask questions, post comments, or react in any way.

We hope to have the migration complete by Wednesday March 5th (or sooner), so please keep an eye out!

How to connect XASession of Solace JMS API with Weblogic Database XAConnection?

Richa
Richa Member Posts: 13 ✭✭

Hi Team, Am looking for a way to connect solace XASession with database XA connection (my datasource is on weblogic server) so that if the query execution fails, solace transaction should be rollback when db transaction.rollback is called; and same with commit statement. Or vice-versa - if solace transaction is rolled back, db transaction should also be rolled back.

TIA!

Answers

  • Tamimi
    Tamimi Member, Administrator, Employee Posts: 549 admin

    Hey @Richa - not an expert on transactions, but here are some thoughts. One approach you can take is by configuring a global transaction using the Transaction Manager that both the Solace and the Weblogic transactions can participate in. This way, you ensure that the Solace session and the database connection are part of the same global transaction. Take a look at this resource in the docs for more details https://docs.solace.com/API/Solace-JMS-API/Using-XA-Transactions.htm#

    Basically, you will use SolXAConnectionFactory to create an XA session and make sure to disable direct transport to ensure that only Guaranteed messages are published or received (which is a requirement for transactions).

    For Weblogic, make sure that the XA transaction data source participates in the same global transaction as the Solace session. Read more about configuring global transactions here. https://docs.oracle.com/cd/E50629_01/wls/WLACH/taskhelp/jdbc/jdbc_datasources/ConfigureTransactionOptionsForADataSource.html

    This way, if a part of the transaction fails, the Transaction Manager handles the roll back the entire global transaction which should have XAResource objects obtained from each resource (in this case, Solace and Weblogic).

    Hopefully this helps! Feel free to respond back here with your results and observations.

  • Richa
    Richa Member Posts: 13 ✭✭
    edited July 2024 #3

    Hi @Tamimi, thanks for your reply.

    Due to my requirement constrain, I cannot use "SolXAConnectionFactory" for direct connection to solace.

    Currently, am using solace resource adapter for solace connection via weblogic ( with XA Transaction only). Now to get the connection, am using weblogic initial context factory "weblogic.jndi.WLInitialContextFactory".

    PFB ss of java code used for solace connection.

    Now, I want post execution of "send" method, when am doing any DB transaction and it get failed, then message send on solace should also be rollback when db transaction.rollback is called.

  • Tamimi
    Tamimi Member, Administrator, Employee Posts: 549 admin

    Hmm, I wonder if you can programatically create connection factory and XA Connection Factory Objects for your solution. check more details here

    https://docs.solace.com/API/Solace-JMS-API/Establishing-Connections.htm#establishing_connections_577400906_337783

    This way even if you are using solace resource adapter for solace connection via weblogic you can still have access to the SolXAConnectionFactory object

This Month's Leaders

This Week's Leaders