Hi,
If the properties you are trying to set are configurable when the EntityManager
is created then you could pass them using EMF#createEntityManager(Map props).
There's also xml syntax for injecting these with blueprint:
<bean id="contextWithProps">
<jpa:context property="em">
<map>
<entry key="one" value="eins" />
<entry key="two" value="zwo" />
</map>
</jpa:context>
</bean>
If the properties you want to set can only be set at EntityManagerFactory
creation time then using your own ManagePersistenceUnitInfoFactory is a pretty
good idea (although it is a reasonably large amount of effort).
Subclassing/wrapping the existing implementation obviously risks you being
broken unexpectedly (it's not part of the API).
Regards,
Tim
> Date: Mon, 20 Jun 2011 16:31:02 +0200
> Subject: Re: Attaching jpa persistence.xml via fragments to a persistence
> bundle
> From: [email protected]
> To: [email protected]
>
> Thank for you answers,
>
> so a usage of fragments failes.... I realy reluctant would create n
> (dbms) * m (jpa provider) * k (log level) * etc.... times bundles,
> with the same classes and just deversity persistence.xml. Do you have
> a best practice for me how to reference a persistence.xml (or just the
> provider specific properties) which is not part of my persistence
> bundle?
> Maybe using a selfwritten
> org.apache.aries.jpa.container.ManagedPersistenceUnitInfoFactory which
> has preconfigured properties/settings for a specific persistence unit
> and merges them?
>
> Regards,
> Marcel
>
> 2011/6/20 Timothy Ward <[email protected]>:
> > Hi,
> >
> > There is another much more important reason to use getEntry, the JPA
> > container processes persistence bundles as they are installed to prevent any
> > classes being able to be loaded before the metadata can be parsed. We then
> > immediately create an EntityManagerFactory as the bundle resolves. If any
> > classes were to be loaded before we created the EntityManagerFactory then it
> > would not be possible to load-time enhance the entity classes.
> >
> > Unfortunately there are no fragments attached when the bundle is in the
> > INSTALLED state. Using getResource() would cause the bundle to move to
> > RESOLVED which we don't want either.
> >
> > Regards,
> >
> > Tim
> >
> >> Subject: Re: Attaching jpa persistence.xml via fragments to a persistence
> >> bundle
> >> From: [email protected]
> >> Date: Mon, 20 Jun 2011 09:05:29 +0100
> >> To: [email protected]
> >>
> >> Hi,
> >>
> >> getResource does something very different from getEntry. getResource uses
> >> the Bundle-Classpath so it doesn't guarantee to return
> >> META-INF/persistence.xml rooted in the bundle. That is why getResource is
> >> not used.
> >>
> >> I don't know why fragments aren't processed, other people in the list can,
> >> I'm sure, explain why.
> >>
> >> Alasdair Nottingham
> >>
> >> On 20 Jun 2011, at 07:56, Marcel Hanser
> >> <[email protected]> wrote:
> >>
> >> > Hi,
> >> >
> >> > i would like to attach a persistence.xml, or more percise parts of it,
> >> > to my jpa persistence bundle, since the concrete provider and DBMS
> >> > configuration should be chooseable without modify the persistence
> >> > bundle.
> >> > I scanned a the aries jpa code and found the
> >> > org.apache.aries.jpa.container.ManagedPersistenceUnitInfoFactory
> >> > plug-in point and also the
> >> >
> >> > org.apache.aries.jpa.container.impl.PersistenceBundleHelper.locateFile(Bundle,
> >> > String) method. And now im wondering why using bundle.getEntry(String)
> >> > instead of bundle.getResource(String). Since fragments are not scanned
> >> > when using bundle.getEntry(String).
> >> > So is there already a way for doing that and i just missed it?
> >> >
> >> > Thanks in advance.
> >> >
> >> > Marcel Hanser
> >