-
2. Re: Transaction management in JCA adapter is screwed up
timfox Jul 21, 2009 6:39 AM (in response to timfox)This is how I think the tx behaviour should be:
1) CMT, tx=NOT_SUPPORTED, local_optimisation = false:
MDB should be *non transacted* - it should use the ack mode as specified in the meta data
2) CMT, tx=NOT_SUPPORTED, local_optimisation = true
MDB should be *non transacted* - it should use the ack mode as specified in the meta data
3) CMT, REQUIRED, local_optimisation = false:
MDB should create a JTA tx *before delivery* and commit at completion of onMessage
4) CMT, REQUIRED, local_optimisation = true
MDB should create a *** local tx *** *before delivery* and commit at completion of onMessage
5) BMT, local_optimisation = false:
MDB should be *non transacted* - it should use the ack mode as specified in the meta data (unless a user transaction is started)
6) BMT, local_optimisation = true
MDB should be *non transacted* - it should use the ack mode as specified in the meta data (unless a user transaction is started) -
3. Re: Transaction management in JCA adapter is screwed up
ataylor Jul 22, 2009 9:58 AM (in response to timfox)Ive implemented this with the following changes.
2) CMT, tx=NOT_SUPPORTED, local_optimisation = true
MDB should be *non transacted* - it should use the ack mode as specified in the meta data
Ive made this option so that it uses the a local tx, this is to allow the user to run with *only* a single local tx. see next.4) CMT, REQUIRED, local_optimisation = true
MDB should create a *** local tx *** *before delivery* and commit at completion of onMessage
When 'REQUIRED' is chosen then the container will always create a global tx no matter what. This happens when the call is made to endpoint..onMessage(message) method (endpoint is a proxy and creates the tx before the actual call to the MDB's onMessage). This means that there would be a local proxy and a global proxy. I've left this configurable and i'll explain fully in the docs how local optimization works.5) BMT, local_optimisation = false:
MDB should be *non transacted* - it should use the ack mode as specified in the meta data (unless a user transaction is started)
The ack mode is always used. The outcome of a user transaction when used in an MDB has no effect on the actual delivery.6) BMT, local_optimisation = true
MDB should be *non transacted* - it should use the ack mode as specified in the meta data (unless a user transaction is started)
I've allowed the user to be able to use local tx's if they want. because of the reason mentioned for 5). This means that if an exception is thrown from inside the MDb the user can have the message redelivered. -
4. Re: Transaction management in JCA adapter is screwed up
timfox Jul 22, 2009 10:18 AM (in response to timfox)Are you allowing Clebert's suggestion of batching too?
-
5. Re: Transaction management in JCA adapter is screwed up
ataylor Jul 23, 2009 5:33 AM (in response to timfox)yeah, I'm going to do that
-
6. Re: Transaction management in JCA adapter is screwed up
timfox Aug 2, 2009 7:46 AM (in response to timfox)Great, I noticed this task is marked as complete. Does that mean batching is done too?
If so, how is it configured? -
7. Re: Transaction management in JCA adapter is screwed up
ataylor Aug 3, 2009 4:49 AM (in response to timfox)Great, I noticed this task is marked as complete. Does that mean batching is done too?
No, I've just posted separately on this.