I *think* I have worked this out, and if I have then using the Geronimo JTA Transaction Manager via Jencks is in fact as dead-simple as the documentation makes it appear. However it's so simple and too good to be true that I'm afraid I have in some way misinterpreted the results of my tests, so I want to ask this group if it's possible that it's actually working the way I think it is.
I'm pretty sure that the reason I was having trouble before was not because I hadn't configured all of the outbound JDBC and JMS related beans in my Spring configuration but instead because I hadn't set the sessionTransacted property of my JmsTemplate to true. Now I am getting the test results I was expecting, and when I step through the code and view the Spring and Hibernate debug messages I am seeing the behavior I expect. I have only configured a transactionManager bean which is of the class org.jencks.factory.TransactionManagerFactoryBean (as described here http://jencks.org/Transaction+Manager), and now use this as the transactionManager referenced in my Spring AOP configuration for declarative transaction management. My tests are succeeding in rolling back both a Hibernate saveOrUpdate() and a JMS send() if either of the two fails, otherwise both are committed as expected if they both succeed. I hope someone can confirm for me that I'm not crazy and that this really is probably working like I think it is (I realize you can only surmise without seeing my configuration and codes). If I'm likely to be mistaken, i.e. this can't actually work like I think it is with such a minimal configuration, then someone please tell me what parts I am missing to make this work like I think it is already. Thanks in advance. --James James Adams wrote: > > I have been trying without success to configure my Spring application to > use the Geronimo JTA Transaction Manager via Jencks. I have run into a > few problems/questions which hopefully someone here can help me with. > Please bear in mind that I am a JTA/Jencks neophyte and hence I may not > understand some things which may be obvious to an experienced > Jencks/Geronimo developer. > > 1. Because the documentation for deploying a JTA Transaction Manager is so > sparse I assumed that this is all that necessary to have the application > use global/XA transactions -- just wire in a JTA Transaction Manager to > use as the application's transactionManager bean (referenced in the > declarative transaction management AOP configuration) and everything else > works like magic. Unfortunately this isn't appearing to be the case based > on my tests. Perhaps I have written the wrong type of tests, or I don't > know how to properly decipher the log messages, but if not then it appears > that there's more to it than this. Am I right in this assumption? > > 2. Assuming that I am correct in that I need to do some more wiring of my > DataSource and JMS components then I probably need to follow the > instructions in the Jencks Documentation for Outbound JDBC, Outbound JMS, > and Message-Driven POJOs. I started down this path and I soon ran across > a big problem -- in both the Outbound JDBC and Outbound JMS documentation > sections the example configuration for the connectionManager bean includes > a transactionManager property, but when I run my application Spring > complains that such a property doesn't exist for this bean's class > (org.jencks.factory.ConnectionManagerFactoryBean): > > Caused by: org.springframework.beans.NotWritablePropertyException: Invalid > property 'transactionManager' of bean class > [org.jencks.factory.ConnectionManagerFactoryBean]: Bean property > 'transactionManager' is not writable or has an invalid setter method. Does > the parameter type of the setter match the return type of the getter? > > Is this another example of the documentation only being relevant to the > new 2.0-SNAPSHOT development release, and there is some wrapper trick > needed if using the latest stable 1.3 release of Jencks? If not then is > the documentation incorrect in that there's actually another class that > should be used for this bean? > > 3. The Outbound JMS section of the documentation specifies the class > org.jencks.factory.ConnectionFactoryFactoryBean for the > jmsConnectionFactory bean, however this class doesn't exist in the Jencks > 1.0 API as far as I can tell, and I can't find another class to use which > may have been the intended class for the example. Can anyone clarify > and/or suggest how I can work around this? > > 4. I haven't gotten around to applying the Message Driven POJOs section of > the documentation to my application's configuration, and I'm hesitant to > do so because I already have the Message Driven POJOs part of my > application working well using Spring's DefaultMessageListenerContainer. > Do I really need to modify my configuration according to the Jencks > documentation, or could I just specify my DefaultMessageListenerContainer > to use the JTA Transaction Manager from the Jencks configuration and call > it good? (I'm afraid that this would be too simple of a configuration > modification, based on my experience up to this point.) > > Thanks in advance for any help. > > > --James > -- View this message in context: http://www.nabble.com/Problems-configuring-my-application-for-JTA-transaction-management-of-Hibernate-%2B-JMS-tf2834029.html#a7944015 Sent from the jencks - user mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe from this list please visit: http://xircles.codehaus.org/manage_email
