But I can't use that. In the same way that I have to provide the transaction
manager to Kodo, I have to provide this transaction manager to the
datasource as well. To create the datasource we're doing something like:

       MinervaPool minervaPool = new MinervaPool();
       minervaPool.setTransactionManager(_txMgr);
       minervaPool.getConnectionFactory().setConnectionURL(url);
       minervaPool.getConnectionFactory().setUserName("sa");
       minervaPool.getConnectionFactory().setDriver(
               org.apache.derby.jdbc.EmbeddedDriver.class.getName());

       minervaPool.getPoolParams().maxSize = _odeConfig.getPoolMaxSize();
       minervaPool.getPoolParams().minSize = _odeConfig.getPoolMinSize();
       minervaPool.getPoolParams().blocking = false;
       minervaPool.setType(MinervaPool.PoolType.MANAGED);

       try {
           minervaPool.start();
       } catch (Exception ex) {
           String errmsg = __msgs.msgOdeDbPoolStartupFailed(url);
           __log.error(errmsg, ex);
           throw new ServletException(errmsg, ex);
       }

       _datasource = minervaPool.createDataSource();

The most important things are to set the tx mgr and the type of the pool to
'managed'. So if I use the "openjpa.ConnectionDriverName", would Kodo
configure Miverva properly?

Thanks,

Matthieu

On 12/13/06, Marc Prud'hommeaux <[EMAIL PROTECTED]> wrote:

Matthieu-

You can specify the full class name of your DataSource in the
"openjpa.ConnectionDriverName" property. This too is discussed at
http://incubator.apache.org/openjpa/docs/latest/manual/
manual.html#ref_guide_dbsetup



On Dec 13, 2006, at 4:42 PM, Matthieu Riou wrote:

> Sorry to be a pain but the thing is, we don't want to use any JNDI to
> register our datasource. We just create our own so that would mean
> creating
> a whole JNDI registry just to pass a datasource to Kodo. So my
> question was
> whether there was the same type of interface I could implement to
> return our
> custom datasource.
>
> Thanks,
>
> Matthieu
>
> On 12/13/06, Marc Prud'hommeaux <[EMAIL PROTECTED]> wrote:
>>
>> Matthieu-
>>
>> If you set the openjpa.ConnectionFactoryName to the JNDI name of a
>> DataSource, then Kodo will use that.
>>
>> See: http://incubator.apache.org/openjpa/docs/latest/manual/
>> manual.html#ref_guide_dbsetup
>>
>>
>>
>> On Dec 13, 2006, at 4:21 PM, Matthieu Riou wrote:
>>
>> > Thanks Marc! And what about the datasource? Is there another
>> > equivalent
>> > interface and property to use?
>> >
>> > On 12/13/06, Marc Prud'hommeaux <[EMAIL PROTECTED]> wrote:
>> >>
>> >> Matthieu-
>> >>
>> >> If you have a custom TransactionManager, you can tell Kodo to
>> access
>> >> it using a ManagedRuntime implementation (see http://
>> >> incubator.apache.org/openjpa/docs/latest/javadoc/org/apache/
>> openjpa/
>> >> ee/ManagedRuntime.html ).
>> >>
>> >> For example, if your TransactionManager is accessible via the JNDI
>> >> name "comp/env/MyTransactionManager", then you could tell
>> OpenJPA to
>> >> access it by setting the "openjpa.ManagedRuntime" property to the
>> >> value: "org.apache.openjpa.ee.JNDIManagedRuntime
>> >> (TransactionManagerName=comp/env/MyTransactionManager)". For more
>> >> exotic mechanisms of accessing the TransactionManager, you can
>> just
>> >> make a custom implementation of the ManagedRuntime class.
>> >>
>> >> In the future, we intent to make this more standard by
>> utilizing the
>> >> new javax.transaction.TransactionSynchronizationRegistry
>> mechanism,
>> >> but for now, we have custom implementations for each of our
>> known and
>> >> supported application servers (see the code at http://
>> svn.apache.org/
>> >> viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/
>> >> apache/openjpa/ee/AutomaticManagedRuntime.java?
>> >> view=markup&pathrev=468504 ).
>> >>
>> >> See also: http://incubator.apache.org/openjpa/docs/latest/manual/
>> >> manual.html#ref_guide_enterprise_trans
>> >>
>> >>
>> >>
>> >>
>> >> On Dec 13, 2006, at 1:13 PM, Matthieu Riou wrote:
>> >>
>> >> > Hi JPA guys,
>> >> >
>> >> > In the Apache Ode podling we're currently working on replacing
>> >> > Hibernate
>> >> > with OpenJPA. It's been working great so far but I have a
>> couple of
>> >> > questions. I'd need to set the transaction manager and the
>> >> datasource
>> >> > manually using the OpenJPA API and I've been unable to find the
>> >> > right class
>> >> > and the right setters so far. Is there an easy way to do that?
>> >> >
>> >> > The use case is we need to run both in containers with their
>> own tx
>> >> > manager
>> >> > (like Geronimo) and lightweight containers (like Tomcat). In the
>> >> > lightweight
>> >> > case we instantiate our own transaction manager (JOTM) and
>> our own
>> >> > datasource (Minerva) and we don't need any JNDI (unnecessary
>> >> painful).
>> >> >
>> >> > I've been looking around and haven't found an easy way. I could
>> >> > have a look
>> >> > at the sources but I figured that asking you directly would be
>> >> > quicker.
>> >> >
>> >> > Thanks!
>> >> >
>> >> > Matthieu
>> >>
>> >>
>>
>>


Reply via email to