> However, I do think that there is still a need to expand the proposal
Scott and I want to make to the CDI spec wrt something like our
ExtendedBeanManager to also account for the shutdown phase

+1, I sent an email about just that on the mailing list. There are some
drawbacks to this approach though, and Sanne suggested deeper integration
into CDI would be a more future-proof path.
The subject of this thread was "CDI integration in Hibernate ORM and the
Application scope".

Yoann Rodière
Hibernate NoORM Team
yo...@hibernate.org

On 21 December 2017 at 16:36, Steve Ebersole <st...@hibernate.org> wrote:

> Awesome!  Glad it worked out.
>
> However, I do think that there is still a need to expand the proposal
> Scott and I want to make to the CDI spec wrt something like our
> ExtendedBeanManager to also account for the shutdown phase.  In addition to
> knowing when the BeanManager is ready to use, it would be nice to know when
> the BeanManager is ready to shutdown (a before shutdown hook).  At that
> point we could begin cleaning up our CreationalContext, etc refs.
>
> Scott, do you already have enough insight into that in WildFly for us to
> go ahead and do that in our integration today?
>
> On Thu, Dec 21, 2017, 1:53 AM Yoann Rodiere <yo...@hibernate.org> wrote:
>
>> Hi,
>>
>> Following our conversations on HipChat and the various changes you
>> implemented (thanks!), I tested the current implementation. There were a
>> few issues, but I managed to fix them and make all the tests in Hibernate
>> Search pass.
>> Here is a PR with the fixes: https://github.com/
>> hibernate/hibernate-orm/pull/2092
>>
>> Yoann Rodière
>> Hibernate NoORM Team
>> yo...@hibernate.org
>>
>> On 14 December 2017 at 18:42, Steve Ebersole <st...@hibernate.org> wrote:
>>
>>> Here is the commit with initial support for named CDI beans and support
>>> for bypassing registry caching of ManagedBeans : https://github.com/
>>> hibernate/hibernate-orm/commit/ddc1f03abc675a27ed025b8c00495d39bca7fb60
>>>
>>> There is still a question of whether named beans support needs to do
>>> the javax.enterprise.inject.spi.InjectionTarget stuff
>>>
>>> Christian, I ended up going to "beans" as the package name because this
>>> supports non-CDI environments (direct instantiation) too.  Not overly a fan
>>> of "beans" (overloaded term) but it was a lesser of evils.
>>>
>>> On Thu, Dec 14, 2017 at 10:57 AM Steve Ebersole <st...@hibernate.org>
>>> wrote:
>>>
>>>> Yoann, does this approach still need to do the injections
>>>> (javax.enterprise.inject.spi.InjectionTarget)?
>>>>
>>>>
>>>> On Thu, Dec 14, 2017 at 8:01 AM Yoann Rodiere <yo...@hibernate.org>
>>>> wrote:
>>>>
>>>>> Here is how it should work from what I understand (adapted from an
>>>>> implementation in Search, which has slightly different requirements):
>>>>>
>>>>> static <T> T getBeanInstance(BeanManager beanManager, String beanName,
>>>>> Class<T> contract) {
>>>>> Set<Bean<?>> beans = beanManager.getBeans(contract, new
>>>>> NamedQualifier(beanName));
>>>>> if ( beans.isEmpty() || beans.size() > 1 ) {
>>>>> // TODO proper error messages
>>>>> throw new IllegalArgumentException( "No matching beans or multiple
>>>>> matching beans" );
>>>>> }
>>>>> Bean<?> bean = beans.iterator().next();
>>>>> CreationalContext<T> creationalContext = 
>>>>> beanManager.createCreationalContext(
>>>>> bean );
>>>>> return contract.cast( beanManager.getReference( bean, contract,
>>>>> creationalContext ) );
>>>>> }
>>>>>
>>>>> With NamedQualifier being the implementation I gave before.
>>>>>
>>>>> Sure, let's talk about it later on HipChat. Especially the caching
>>>>> thing, it's really a blocker for Search.
>>>>>
>>>>> I'll be online to travel in about 3 hours, though.
>>>>>
>>>>>
>>>>> Yoann Rodière
>>>>> Hibernate NoORM Team
>>>>> yo...@hibernate.org
>>>>>
>>>>> On 14 December 2017 at 14:46, Steve Ebersole <st...@hibernate.org>
>>>>> wrote:
>>>>>
>>>>>> I'll be on HipChat later after I get back from taking my son and
>>>>>> daughter to school.  Maybe it is easier to discuss there.
>>>>>>
>>>>>> On Thu, Dec 14, 2017 at 7:44 AM Steve Ebersole <st...@hibernate.org>
>>>>>> wrote:
>>>>>>
>>>>>>> But your answer above does not answer my question ;)
>>>>>>>
>>>>>>> I still have no idea how to go from name+Class -> bean.
>>>>>>>
>>>>>>>
>>>>>>> On Thu, Dec 14, 2017 at 7:41 AM Yoann Rodiere <yo...@hibernate.org>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> Yeah, it was 4AM in France when you asked :) I answered later on
>>>>>>>> HipChat, the answer is basically the one I gave in my email.
>>>>>>>>
>>>>>>>> Yoann Rodière
>>>>>>>> Hibernate NoORM Team
>>>>>>>> yo...@hibernate.org
>>>>>>>>
>>>>>>>> On 14 December 2017 at 14:38, Steve Ebersole <st...@hibernate.org>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> WRT to named beans, I asked Guillaume on HipChat what that is
>>>>>>>>> supposed to look like.  IIRC he mentioned producers in Paris, but I 
>>>>>>>>> found
>>>>>>>>> no straight-forward way to get from name+class to a bean.
>>>>>>>>>
>>>>>>>>> He may have answered, I just have not been on HipChat yet today...
>>>>>>>>>
>>>>>>>>> On Thu, Dec 14, 2017 at 7:36 AM Steve Ebersole <
>>>>>>>>> st...@hibernate.org> wrote:
>>>>>>>>>
>>>>>>>>>> Its easier to cleanup
>>>>>>>>>>
>>>>>>>>>> On Thu, Dec 14, 2017 at 6:52 AM Steve Ebersole <
>>>>>>>>>> st...@hibernate.org> wrote:
>>>>>>>>>>
>>>>>>>>>>> There are a lot of changes to digest here, but if anyone wanted
>>>>>>>>>>> to take a look at this so far...
>>>>>>>>>>>
>>>>>>>>>>> https://github.com/hibernate/hibernate-orm/commit/
>>>>>>>>>>> 564ec55ca10c0d5d2afd73243dc0aa31759e8f5b
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On Thu, Dec 14, 2017 at 6:47 AM Steve Ebersole <
>>>>>>>>>>> st...@hibernate.org> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Actually my fault.  Apparently renaming the package was way too
>>>>>>>>>>>> aggressive and renamed the artifact
>>>>>>>>>>>>
>>>>>>>>>>>> On Thu, Dec 14, 2017 at 6:40 AM Steve Ebersole <
>>>>>>>>>>>> st...@hibernate.org> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> Ah, nm.  They change the artifact name.  Boo!
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Thu, Dec 14, 2017 at 6:39 AM Steve Ebersole <
>>>>>>>>>>>>> st...@hibernate.org> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>> Anyone know what happened to the 2.0 CDI artifact on Maven
>>>>>>>>>>>>>> Central?  It was there last week, but is no longer there...
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Thu, Dec 14, 2017 at 5:54 AM Steve Ebersole <
>>>>>>>>>>>>>> st...@hibernate.org> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Thanks for the replies.  So unless we hear otherwise from
>>>>>>>>>>>>>>> anyone else, I will plan on supporting just one DI container.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> On Thu, Dec 14, 2017 at 2:54 AM Yoann Rodiere <
>>>>>>>>>>>>>>> yo...@hibernate.org> wrote:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Same here, compositions don't seem to be a reasonable use
>>>>>>>>>>>>>>>> case. And even if
>>>>>>>>>>>>>>>> users provide a custom bean registry, they could just
>>>>>>>>>>>>>>>> implement their
>>>>>>>>>>>>>>>> specific behavior for a few specific case, then retrieve
>>>>>>>>>>>>>>>> another
>>>>>>>>>>>>>>>> implementations on their own and delegate to it however
>>>>>>>>>>>>>>>> they want.
>>>>>>>>>>>>>>>> Overriding the service initiator looks like a very
>>>>>>>>>>>>>>>> reasonable way to do
>>>>>>>>>>>>>>>> that.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Regarding the package, "org.hibernate.resource.beans" seems
>>>>>>>>>>>>>>>> more
>>>>>>>>>>>>>>>> appropriate to me, since CDI is not the only implementation
>>>>>>>>>>>>>>>> we will get and
>>>>>>>>>>>>>>>> we know it. Also, if I wanted to nitpick, injection is not
>>>>>>>>>>>>>>>> really something
>>>>>>>>>>>>>>>> the bean registry must provide. We could imagine a bean
>>>>>>>>>>>>>>>> registry without
>>>>>>>>>>>>>>>> any support for injection, after all, just providing
>>>>>>>>>>>>>>>> "monolithic beans". It
>>>>>>>>>>>>>>>> would still make sense with respect to your
>>>>>>>>>>>>>>>> ManagedBeanRegistry API.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Yoann Rodière
>>>>>>>>>>>>>>>> Hibernate NoORM Team
>>>>>>>>>>>>>>>> yo...@hibernate.org
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On 14 December 2017 at 08:01, Christian Beikov <
>>>>>>>>>>>>>>>> christian.bei...@gmail.com>
>>>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> > I don't think someone is actually going to use more than
>>>>>>>>>>>>>>>> a single DI
>>>>>>>>>>>>>>>> > framework and even if they do, they will probably bridge
>>>>>>>>>>>>>>>> one way or
>>>>>>>>>>>>>>>> > another between the DI frameworks to be able to access
>>>>>>>>>>>>>>>> beans from one in
>>>>>>>>>>>>>>>> > the other.
>>>>>>>>>>>>>>>> >
>>>>>>>>>>>>>>>> > So I don't think we should do "compositions" since it's
>>>>>>>>>>>>>>>> not a big deal
>>>>>>>>>>>>>>>> > to integrate different DIs and is also IMO an edge case.
>>>>>>>>>>>>>>>> I'd prefer the
>>>>>>>>>>>>>>>> > package name `org.hibernate.resource.di` since CDI seems
>>>>>>>>>>>>>>>> to be just one
>>>>>>>>>>>>>>>> > of the possible "integrations".
>>>>>>>>>>>>>>>> >
>>>>>>>>>>>>>>>> >
>>>>>>>>>>>>>>>> > Mit freundlichen Grüßen,
>>>>>>>>>>>>>>>> > ------------------------------
>>>>>>>>>>>>>>>> ------------------------------------------
>>>>>>>>>>>>>>>> > *Christian Beikov*
>>>>>>>>>>>>>>>> > Am 13.12.2017 um 21:04 schrieb Steve Ebersole:
>>>>>>>>>>>>>>>> > > https://hibernate.atlassian.net/browse/HHH-11259 and
>>>>>>>>>>>>>>>> friends are mainly
>>>>>>>>>>>>>>>> > > about back porting the work I did on 6.0 for the
>>>>>>>>>>>>>>>> ManagedBeanRegistry
>>>>>>>>>>>>>>>> > > abstraction over dependency injection containers.  We
>>>>>>>>>>>>>>>> will ship support
>>>>>>>>>>>>>>>> > for
>>>>>>>>>>>>>>>> > > CDI as well as non-managed beans (things we directly
>>>>>>>>>>>>>>>> instantiate).  Of
>>>>>>>>>>>>>>>> > > course we'd ideally make it easy to plug in other DI
>>>>>>>>>>>>>>>> containers such as
>>>>>>>>>>>>>>>> > > Spring.  So I wanted to discuss the configuration of
>>>>>>>>>>>>>>>> this support.
>>>>>>>>>>>>>>>> > >
>>>>>>>>>>>>>>>> > > The first thing to consider is whether we want to
>>>>>>>>>>>>>>>> support using multiple
>>>>>>>>>>>>>>>> > DI
>>>>>>>>>>>>>>>> > > containers simultaneously.  E.g. is it conceivable that
>>>>>>>>>>>>>>>> an application
>>>>>>>>>>>>>>>> > > might want to use both CDI and Spring simultaneously?
>>>>>>>>>>>>>>>> I started building
>>>>>>>>>>>>>>>> > > in support for that via a CompositeManagedBeanRegistry
>>>>>>>>>>>>>>>> implementation,
>>>>>>>>>>>>>>>> > but
>>>>>>>>>>>>>>>> > > stepping back I want to gauge whether that is
>>>>>>>>>>>>>>>> "reasonable" before
>>>>>>>>>>>>>>>> > > continuing down that path
>>>>>>>>>>>>>>>> > >
>>>>>>>>>>>>>>>> > > Assuming that we do want to support such "compositions"
>>>>>>>>>>>>>>>> the next question
>>>>>>>>>>>>>>>> > > is how we see this being configured.  Clearly any time
>>>>>>>>>>>>>>>> a CDI BeanManager
>>>>>>>>>>>>>>>> > is
>>>>>>>>>>>>>>>> > > present during bootstrap we want to enable CDI
>>>>>>>>>>>>>>>> ManagedBeanRegistry
>>>>>>>>>>>>>>>> > > support.  How would users indicate additional
>>>>>>>>>>>>>>>> ManagedBeanRegistry impls
>>>>>>>>>>>>>>>> > be
>>>>>>>>>>>>>>>> > > added to the CompositeManagedBeanRegistry?  I have
>>>>>>>>>>>>>>>> opinions about this,
>>>>>>>>>>>>>>>> > but
>>>>>>>>>>>>>>>> > > I'd like to hear other's thoughts...
>>>>>>>>>>>>>>>> > >
>>>>>>>>>>>>>>>> > > Note that ManagedBeanRegistry is a service and is
>>>>>>>>>>>>>>>> initiated
>>>>>>>>>>>>>>>> > > via 
>>>>>>>>>>>>>>>> > > org.hibernate.resource.cdi.spi.ManagedBeanRegistryInitiator.
>>>>>>>>>>>>>>>> So it
>>>>>>>>>>>>>>>> > > would be possible to completely redefine
>>>>>>>>>>>>>>>> ManagedBeanRegistry support
>>>>>>>>>>>>>>>> > simply
>>>>>>>>>>>>>>>> > > by replacing that initiator.
>>>>>>>>>>>>>>>> > >
>>>>>>>>>>>>>>>> > > A minor point... notice that the package name here is
>>>>>>>>>>>>>>>> > > `org.hibernate.resource.cdi`, even though one of the
>>>>>>>>>>>>>>>> goals here is to
>>>>>>>>>>>>>>>> > > support non-CDI ManagedBeanRegistry impls.  Do we want
>>>>>>>>>>>>>>>> to use a different
>>>>>>>>>>>>>>>> > > package name?  Maybe `org.hibernate.resource.beans`?
>>>>>>>>>>>>>>>> > >   ``org.hibernate.resource.di`?
>>>>>>>>>>>>>>>> ``org.hibernate.resource.injection`?
>>>>>>>>>>>>>>>> > > Other suggestions?  I'm actually ok with
>>>>>>>>>>>>>>>> `org.hibernate.resource.cdi` -
>>>>>>>>>>>>>>>> > imo
>>>>>>>>>>>>>>>> > > "cdi" conveys the proper intent.  But if others feel
>>>>>>>>>>>>>>>> strongly it should
>>>>>>>>>>>>>>>> > be
>>>>>>>>>>>>>>>> > > something else, I am open to hearing what and why.
>>>>>>>>>>>>>>>> > > _______________________________________________
>>>>>>>>>>>>>>>> > > hibernate-dev mailing list
>>>>>>>>>>>>>>>> > > hibernate-dev@lists.jboss.org
>>>>>>>>>>>>>>>> > > https://lists.jboss.org/mailman/listinfo/hibernate-dev
>>>>>>>>>>>>>>>> >
>>>>>>>>>>>>>>>> > _______________________________________________
>>>>>>>>>>>>>>>> > hibernate-dev mailing list
>>>>>>>>>>>>>>>> > hibernate-dev@lists.jboss.org
>>>>>>>>>>>>>>>> > https://lists.jboss.org/mailman/listinfo/hibernate-dev
>>>>>>>>>>>>>>>> >
>>>>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>>>>>> hibernate-dev mailing list
>>>>>>>>>>>>>>>> hibernate-dev@lists.jboss.org
>>>>>>>>>>>>>>>> https://lists.jboss.org/mailman/listinfo/hibernate-dev
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>
>>>>>
>>
_______________________________________________
hibernate-dev mailing list
hibernate-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/hibernate-dev

Reply via email to