Hi Don, On 1/1/07, Craig L Russell <[EMAIL PROTECTED]> wrote:
Hi Don, The short answer is yes, UserTransaction is supposed to work. On Jan 1, 2007, at 11:52 AM, Don Brady wrote: > I cannot get UserTransaction to work. > > Nothing happens when I commit. Is the symptom that the commit succeeds but there is no change in the database? > > This consists of: > > - Using a JTA datasource > - specifying Bean Managed Transaction rather then CMT on the > enclosing session Bean. > - looking up a UserTransaction with: > UserTransaction userTran = (UserTransaction) initCtx > .lookup("java:comp/UserTransaction"); > > then doing a begin on it, some entity lookup and changes, and a > commit. Is the EntityManagerFactory (PersistenceUnit) also declared as JTA, in addition to the DataSource that it uses? Both need to be JTA-enabled. > > Could anyone tell me if this should work? > This is under WebSphere 6.1. > > As background, I am able to get a JTA data source to work fine if I > use Container Managed Transactions rather than BMT. The problem > with that approach for me is that I am calling the session Bean as > a web-service-enable endpoint. If I leave committing the > transaction entirely to JTA, the commit is done after all of my > web service code has exited and any errors are thrown as soap > faults. I want to be able to catch the error and analyze it > before returning from the web service. I can also do this fine > with Resource Local Transactions but then I do not get the benefits > of a JTA datasource managed by WebSphere. And the possibility of using other transactional resources as well.
If you lookup the UserTransaction in your Session Bean, then your approach should work. I tried making the Feature Pack sample application a BMT bean and it seemed to work for me. I can send you the application if you'd like. If the transaction is started prior to looking up a BMT bean, then it will be suspended before the bean method executes. I don't know much about web services, this might not be the case or possible.
> > So I am trying to use JTA with BMT which I believe would allow me > to catch errors on commit. Right, this is a good pattern to use in order to wrap database errors with your own (presumably more user-friendly) exceptions. Craig > > If this is too much of a user question for this list, please let > me know..... > > Thanks! > > Don > > > > > > > > Craig Russell Architect, Sun Java Enterprise System http://java.sun.com/products/jdo 408 276-5638 mailto:[EMAIL PROTECTED] P.S. A good JDO? O, Gasp!
Hope this helps, -- -Michael Dick