Deep-level questions regarding transaction handling on OSB
Hi,
I'm in the process of describing (and discovering and implementing) how the transaction handling works with regards to OSB. I've managed to get transaction to work the way I want to, but during tuning some settings questions arose that I didn't find an answer too.
1. If you have nested proxy services (PS1->PS2->PS3), and want them all to participate in a single transaction (request/response), do you only need to have "transaction required" flag on the first proxy service (PS1), as it will propagate downwards?
2. Do you only need specify "QOS - Exactly once" for Service callouts, not for Routing nodes?
3. If you have nested proxy services (PS1->PS2->PS3), and PS1 make an update to a datasource (DS1), PS2 makes an update to a datasource (DS2), while PS3 makes an update to DS1 (same as for PS1).
3.1. If all of the datasources are XA will it automatically use the same SQL connection for PS1 and PS3 (i.e. GetActiveUnitOfWork=true) even if this was not enabled in the JCA settings?
3.2. If DS1 is a non-XA enabled DS, but supports global transaction (emulated 2PC), will it automatically use the same SQL connection for PS1 and PS3 (http://docs.oracle.com/cd/E15523_01/integration.1111/e10231/adptr_db.htm)?
3.3. If DS1 is a non-XA enabled DS, but supports global transaction (LLR - Logging Last Resource), will it automatically use the same SQL for PS1 and PS3?
4. The default setting for the DBAdapter plan is not to support transaction (Console->Deployments->DbAdapter->Configuration->Outbound Connection Pools->[some instance]->Transaction). Even if the default is "Transaction support: No transaction", this doesn't disable the transaction management to work as it should.
4.1. Why and when do you need to change this parameter?
4.2. Isn't the transaction managed by the dataSource or xADataSource (using JTA)?
5. For a JDBC JMS Store: A JMSServer , connects to a JDBCStore, which has a datasource connection to a data source. Using a business service to enqueue a message to a queue, you need a connection factory and the queue, which are deployed to the JMSServer.
5.1 The connection factory has XA enabled, and I can see on the JDBCStore that there are XA connection (weblogic.messaging.JMSServer.xa) - is this due to the connection factory?
5.2. A datasource specified for the JMSServer, cannot be XA or support global transaction (http://docs.oracle.com/cd/E17904_01/web.1111/e13701/store.htm). Even though, is supports XA (global) transactions - how is this possible?
5.3. Does this mean that the XA boundary ends at the commit to the JMSStore, and not to the actual database? And there is a 1PC between the JMSStore and database?
Best regards,
Mathias Wiberg