[hibernate-dev] Is there a way to have ServiceContributor per SessionFactory/EMF instead of per application classloader?
Scott Marlow
smarlow at redhat.com
Thu Sep 20 12:05:53 EDT 2018
Is https://gist.github.com/scottmarlow/63241549820243923aab16e664c3c6c3
closer to what we need?
On 9/19/18 3:47 PM, Steve Ebersole wrote:
> StandardServiceRegistry`No, it's not.
>
> Each call to `registry.getService( RegionFactory.class )` in your test
> returns the same `RegionFactory` - by design.
>
> By default each SF bootstrap uses a unique StandardServiceRegistry which
> is what the ServiceContributor contributes services to. In terms of
> your test, it would be like creating a second `StandardServiceRegistry`
> and asking that for the second RegionFactory
>
>
>
> On Wed, Sep 19, 2018 at 11:12 AM Scott Marlow <smarlow at redhat.com
> <mailto:smarlow at redhat.com>> wrote:
>
> Please look at
> https://github.com/scottmarlow/hibernate-orm/tree/ServiceContributorTest
>
> and let me know if this is a valid test. I added a test that calls
> registry.getService( RegionFactory.class ) twice and fails if the
> RegionFactoryInitiator doesn't get called twice.
>
> Is that the same as creating two separate SFs and expecting the
> RegionFactoryInitiator to be called twice?
>
>
> On 9/19/18 9:52 AM, Scott Marlow wrote:
> >
> >
> > On 9/19/18 9:22 AM, Steve Ebersole wrote:
> >> Ohhh... Sorry I misunderstood. I thought you were asking about
> ways
> >> to have the contributor only apply to one of the PUs...
> >>
> >> I'm surprised it isn't applied to each actually. I'd consider
> that a
> >> bug. Can you put together a test?
> >
> > Yes, I will work on a test.
> >
> >>
> >>
> >> On Wed, Sep 19, 2018, 8:12 AM Scott Marlow <smarlow at redhat.com
> <mailto:smarlow at redhat.com>
> >> <mailto:smarlow at redhat.com <mailto:smarlow at redhat.com>>> wrote:
> >>
> >>
> >>
> >> On 9/19/18 5:41 AM, Gunnar Morling wrote:
> >> > Would SessionFactoryServiceContributor [1] be of use to
> you? It
> >> lets you
> >> > add services to the SF-scoped service registry; not sure
> whether
> >> that
> >> > suits your requirements or no.
> >>
> >> Thanks, I will give that a try. We currently use
> >> RegionFactoryInitiator
> >> and update the configuration settings passed via
> >> RegionFactoryInitiator#resolveRegionFactory(Map
> configurationValues,
> >> ServiceRegistryImplementor). I wonder if that is possible with
> >> SessionFactoryServiceContributor?
> >>
> >> >
> >> > --Gunnar
> >> >
> >> > [1]
> >> >
> >>
> >>
> https://github.com/hibernate/hibernate-orm/blob/master/hibernate-core/src/main/java/org/hibernate/service/spi/SessionFactoryServiceContributor.java
>
> >>
> >> >
> >> > Am Di., 18. Sep. 2018 um 21:00 Uhr schrieb Scott Marlow
> >> > <smarlow at redhat.com <mailto:smarlow at redhat.com>
> <mailto:smarlow at redhat.com <mailto:smarlow at redhat.com>>
> >> <mailto:smarlow at redhat.com <mailto:smarlow at redhat.com>
> <mailto:smarlow at redhat.com <mailto:smarlow at redhat.com>>>>:
> >> > >
> >> > >
> >> > > On 9/14/18 6:14 PM, Steve Ebersole wrote:
> >> > > > Doing so would require a programatic call while
> bootstrapping
> >> > > > Hibernate. The ServiceContributors are applied during
> >> > > >
> >>
> `org.hibernate.boot.registry.StandardServiceRegistryBuilder#build`
> >> > > > processing. So we'd need a call to register a
> >> ServiceContributor with
> >> > > > the StandardServiceRegistryBuilder.
> >> > > >
> >> > > > Of course that also means you'd have to have access
> to the
> >> > > > StandardServiceRegistryBuilder
> >> > >
> >> > > I don't have a way to add a programatic call while
> >> bootstrapping "not
> >> > > JPA container".
> >> > >
> >> > > >
> >> > > > On Fri, Sep 14, 2018 at 9:27 PM Scott Marlow
> >> <smarlow at redhat.com <mailto:smarlow at redhat.com>
> <mailto:smarlow at redhat.com <mailto:smarlow at redhat.com>>
> >> > <mailto:smarlow at redhat.com <mailto:smarlow at redhat.com>
> <mailto:smarlow at redhat.com <mailto:smarlow at redhat.com>>>
> >> > > > <mailto:smarlow at redhat.com
> <mailto:smarlow at redhat.com> <mailto:smarlow at redhat.com
> <mailto:smarlow at redhat.com>>
> >> <mailto:smarlow at redhat.com <mailto:smarlow at redhat.com>
> <mailto:smarlow at redhat.com <mailto:smarlow at redhat.com>>>>> wrote:
> >> > > >
> >> > > > I'm deploying an application with two
> persistence units
> >> > however, the
> >> > > > ServiceContributor
> >> contribute(StandardServiceRegistryBuilder)
> >> > [1] is
> >> > > > only being called once, instead of per
> >> SessionFactory/EMF (or so it
> >> > > > seems).
> >> > > >
> >> > > > Is there a way to have the
> >> > > > contribute(StandardServiceRegistryBuilder) be
> >> > > > called per SessionFactory/EMF instead?
> >> > > >
> >> > > > Scott
> >> > > >
> >> > > > [1]
> >> > > >
> >> >
> >>
> >>
> https://github.com/wildfly/wildfly/blob/master/jpa/hibernate5_3/src/main/java/org/jboss/as/jpa/hibernate5/service/ServiceContributorImpl.java#L28
>
> >>
> >> > > > _______________________________________________
> >> > > > hibernate-dev mailing list
> >> > > > hibernate-dev at lists.jboss.org
> <mailto:hibernate-dev at lists.jboss.org>
> >> <mailto:hibernate-dev at lists.jboss.org
> <mailto:hibernate-dev at lists.jboss.org>>
> >> > <mailto:hibernate-dev at lists.jboss.org
> <mailto:hibernate-dev at lists.jboss.org>
> >> <mailto:hibernate-dev at lists.jboss.org
> <mailto:hibernate-dev at lists.jboss.org>>>
> >> > <mailto:hibernate-dev at lists.jboss.org
> <mailto:hibernate-dev at lists.jboss.org>
> >> <mailto:hibernate-dev at lists.jboss.org
> <mailto:hibernate-dev at lists.jboss.org>>
> >> > <mailto:hibernate-dev at lists.jboss.org
> <mailto:hibernate-dev at lists.jboss.org>
> >> <mailto:hibernate-dev at lists.jboss.org
> <mailto:hibernate-dev at lists.jboss.org>>>>
> >> > > > https://lists.jboss.org/mailman/listinfo/hibernate-dev
> >> > > >
> >> > > _______________________________________________
> >> > > hibernate-dev mailing list
> >> > > hibernate-dev at lists.jboss.org
> <mailto:hibernate-dev at lists.jboss.org>
> >> <mailto:hibernate-dev at lists.jboss.org
> <mailto:hibernate-dev at lists.jboss.org>>
> >> <mailto:hibernate-dev at lists.jboss.org
> <mailto:hibernate-dev at lists.jboss.org>
> >> <mailto:hibernate-dev at lists.jboss.org
> <mailto:hibernate-dev at lists.jboss.org>>>
> >> > > https://lists.jboss.org/mailman/listinfo/hibernate-dev
> >>
>
More information about the hibernate-dev
mailing list