The environment is tomcat. Our database is a JNDI datasource. My application as it exists today is written ENTIRELY in openJPA. Different applications in our project use different methods to talk to databases. Ours is the only one that uses openJPA. I have to implement a new feature which involves me adding a servlet to my webapp: the task requires that I subclass an existing base class servlet, which was written in straight JDBC + SQL. When I write my subclass, I will override a method. When this method is invoked, I am supposed to perform certain database changes. The base class of my servlet is written to get a database connection and start a transaction. By the time MY class is called, the transaction is already in progress. I have no idea what constitutes a "managed" transaction. This terminology kind of smacks to me of EJB development, and we're not writing EJBs here, but I guess I just don't know what you guys mean by "managed" in this context. I could write my subclass servlet in straight jdbc + sql, but that would require duplicating a fair amount of logic that has already been implemented elsewhere in openJPA. It would be FAR simpler for me to find a way to invoke my EXISTING openJPA code but to do it in such a way that (in the context of this servlet only) it will re-use an existing jdbc connection and will recognize that there is already a transaction in progress.
Patrick Linskey <[EMAIL PROTECTED]> 07/03/2008 11:34 AM Please respond to users@openjpa.apache.org To users@openjpa.apache.org cc Subject Re: Re-using an existing jdbc connection? Hi, What environment are you executing your code in? Is this a Java EE app? The easiest way is to put a DataSource into JNDI, configure your transaction manager appropriately, and put OpenJPA into "managed transaction" mode. In this configuration, the semantics of Connection delivery will be up to the DataSource implementation. If you don't have a transaction manager handy, you can create a DataSource implementation that meets your semantics, and provide it to OpenJPA when you create your EntityManagerFactory. -Patrick On Jul 2, 2008, at 5:39 PM, [EMAIL PROTECTED] wrote: > Thanks very much for the joinTransaction() suggestion. > As for the other suggestion, could you provide more detail on how I > could > "make OpenJPA use [the existing JDBC connection] instead of opening > one on > its own"? :-) > Thanks a lot!! > > > > > > > > > Pinaki Poddar <[EMAIL PROTECTED]> > 07/02/2008 06:35 PM > Please respond to > users@openjpa.apache.org > > > To > users@openjpa.apache.org > cc > > Subject > Re: Re-using an existing jdbc connection? > > > > > > > > Hi, > If OpenJPA is invoked in a managed transaction context, > EntityManager.joinTransaction() will make OpenJPA join the existing > transaction. > If there is no managed transaction then you can use a bound the > existing > JDBC connection to a thread and make OpenJPA use it instead of > opening one > on its own. > > > > -- > View this message in context: > http://n2.nabble.com/Re-using-an-existing-jdbc-connection--tp210696p219975.html > > Sent from the OpenJPA Users mailing list archive at Nabble.com. > > -- Patrick Linskey 202 669 5907