Excellent documentation! /Bengt
2010/9/17 Alasdair Nottingham <[email protected]> > Hi, you are right about the samples, it is on my todo list, but I > haven't got to it yet. > > I've written some documentation as a result of your email. It isn't on > our website yet, it needs to sync from the wiki, but you can view it > here: https://cwiki.apache.org/confluence/display/ARIES/JNDIProject > > Alasdair > > On 17 September 2010 07:45, Bengt Rodehav <[email protected]> wrote: > > Thanks for the clarification Alasdair, > > Are there any samples/examples of "osgi:" I can look at. Do I need to add > a > > namespace in the persistent descriptor, deploy certain bundles etc? > > Clearly, the way you describe it, "osgi:" must be preferred to "aries:". > > Maybe the Aries samples should change to reflect that? > > /Bengt > > > > 2010/9/17 Alasdair Nottingham <[email protected]> > >> > >> aries:services is also a JNDI lookup scheme, it works much the same way > as > >> osgi:service, but osgi:service returns a proxy to the target object > which > >> switches out the target if it changes. aries:services does not proxy, > you > >> get e raw object so it is a little bit less dynamic and safe. > >> > >> Alasdair Nottingham > >> On 17 Sep 2010, at 03:10, Bengt Rodehav <[email protected]> wrote: > >> > >> Have I misunderstood when I use "aries:" instead of "osgi:" or is it > just > >> different prefixes to the same namespace? In the JPA samples I cannot > see in > >> the persistence descriptor what namespace "aries:" actually refers to. > >> /Bengt > >> > >> 2010/9/17 Timothy Ward <[email protected]> > >>> > >>> Hi Harald, > >>> > >>> The Aries project aims to provide a managed programming model, and as > >>> such the Aries JPA runtime is not an implementation of the JPA service > >>> specification. > >>> > >>> As a result I'm afraid my first answer is no, Aries JPA cannot be used > to > >>> get unmanaged JPA support, however if you declare your persistence > units to > >>> use RESOURCE_LOCAL transactions then there shouldn't be a need for > OpenJPA > >>> to load any JTA classes. Please let me know if OpenJPA continues to > complain > >>> about the lack of JTA interfaces for RESOURCE_LOCAL persistence units > and > >>> I'll try to get that fixed. > >>> > >>> For your requirements you should need two bundles from the Aries JPA > >>> project, the Aries JPA API bundle and the Aries JPA container bundle. > You > >>> will also need the Aries Util bundle, which the JPA project uses. > >>> > >>> For reference, the JPA container bundles provide the following support: > >>> > >>> jpa-api :- Core interfaces used by the Aries JPA runtime > >>> and Service providers > >>> jpa-container :- The core JPA container, provides managed > >>> EntityManager factories for use in Application-Managed JPA > >>> jpa-container-context :- JPA managed persistence context support, > allows > >>> for bundles to be registered as clients of a managed persistence > context > >>> jpa-blueprint-aries :- Integration with the aries blueprint service > >>> providing a custom namespace for JPA resource injection > >>> > >>> > >>> The Aries JPA container is loosely coupled, so it is entirely possible > to > >>> pick the bundles you need for the support you want, though each piece > of > >>> support builds upon the previous one, so it doesn't make much sense to > have > >>> managed persistence context support without managed persistence unit > >>> support. > >>> > >>> There's no need to use blueprint, Declarative Services is perfectly > >>> capable of retrieving EntityManagerFactory services from the service > >>> registry. > >>> > >>> How data sources are discovered depends upon how they are configured, > if > >>> you use the <jta-data-source> or <non-jta-data-source> tag, then the > Aries > >>> JPA container will use JNDI to get the resource registered with that > JNDI > >>> name. In most cases you actually want to access a DataSource object in > the > >>> service registry, which means you need the Aries JNDI support > (available as > >>> a single bundle, or as separate core and URL handler bundles) which > provides > >>> the osgi: namespace. > >>> > >>> If you want to specify database driver class names in the <properties> > >>> section of the persistence unit then the JPA provider needs to be able > to > >>> load those drivers. I do not know whether OpenJPA has support for the > OSGi > >>> JDBC service specification, or whether they will simply try to load the > >>> driver classes, and so this may not work. > >>> > >>> I hope this message has been helpful, and I agree that there is > >>> insufficient documentation in this area. I would be more than happy for > any > >>> Aries users to contribute information that they find useful so that > better > >>> documentation can be built. > >>> > >>> Regards, > >>> > >>> Tim > >>> > >>> ---------------------------------------- > >>> > From: [email protected] > >>> > To: [email protected] > >>> > Date: Thu, 16 Sep 2010 20:31:48 +0200 > >>> > Subject: OSGi JPA and JDBC Services > >>> > > >>> > I'm currently trying to make OpenJPA 2.0.1 work in an OSGi > environment, > >>> > and while looking for examples, I found a pointer to Apache Aries on > the > >>> > OpenJPA Users' mailing list. > >>> > > >>> > So I had a look at the Aries website, checked out the latest code > from > >>> > trunk, played around with it for a couple of hours and was left with > no > >>> > usable result - it sort of feels like being offered a four course > meal when > >>> > all you were asking for was a plate of soup, and you don't even get a > >>> > spoon... > >>> > > >>> > All I want to do is use OpenJPA in plain old unmanaged mode and have > it > >>> > discover my persistence units and load classes from my application > bundles > >>> > without DynamicImport-Package, buddy policies or fragments. I am > currently > >>> > perfectly happy with Declarative Services and have no intention of > >>> > converting my application to Blueprint. > >>> > > >>> > Can Aries be used to achieve just that? If so, what is the minimum > set > >>> > of Aries bundles I need to include in my application? > >>> > > >>> > I got as far as having my persistence unit discovered, but on > creating > >>> > an EntityManagerFactory, OpenJPA always complained about missing JTA > >>> > support. Does Aries implement unmanaged JPA at all? (It is supported > by the > >>> > OSGi JPA spec, at any rate.) I can only see a call of > >>> > PersistenceProvider.createContainerEntityManagerFactory() in Aries > and no > >>> > occurrence of createEntityManagerFactory(). On the OpenJPA side, > there is > >>> > some code related to OSGi classloaders, but again, this is just used > for the > >>> > managed factories and not for the unmanaged ones. > >>> > > >>> > Another question: how does the Persistence Provider discover the data > >>> > source - where does the magic happen so that the lookup of > >>> > osgi:service:/javax.sql.DataSource will work? Is that done by Aries > alone, > >>> > or does the persistence provider need to be OSGi aware in this > respect? > >>> > > >>> > Thanks in advance for any hints! > >>> > > >>> > Best regards, > >>> > Harald > >>> > > > > > > > > -- > Alasdair Nottingham > [email protected] >
