[cdi-dev] [JBoss JIRA] (CDI-519) Instance.destroy() cannot be used for dependent bean instances not created by the same Instance object
Sven Linstaedt (JIRA)
issues at jboss.org
Tue Sep 8 08:22:00 EDT 2015
[ https://issues.jboss.org/browse/CDI-519?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13106296#comment-13106296 ]
Sven Linstaedt commented on CDI-519:
------------------------------------
{quote}
In your example if we go for 1, there will be no solution to destroy the instance you requested thru CDI.
{quote}
I would expect {{CDI}} as an {{Instance}} implementation to be dependent scoped and therefore live as long as {{CDI.current()}} returns the same instance. The later point is afaik not defined, but from my point of view, this {{Instance}}'s lifecycle is bound to the {{BeanManager}}'s one, as CDI.current() is available as long as the associated BeanManager is, which is the case at least for Weld as Martin stated.
> Instance.destroy() cannot be used for dependent bean instances not created by the same Instance object
> ------------------------------------------------------------------------------------------------------
>
> Key: CDI-519
> URL: https://issues.jboss.org/browse/CDI-519
> Project: CDI Specification Issues
> Issue Type: Clarification
> Affects Versions: 1.2.Final
> Reporter: Martin Kouba
> Fix For: 2.0 (discussion)
>
>
> 5.6.1. The Instance interface:
> {quote}
> The method destroy() instructs the container to destroy the instance. The bean instance passed to destroy() should be *a dependent scoped bean instance*, or...
> {quote}
> I think this should be more obvious. E.g. this wouldn't work correctly even though it doesn't violate the spec:
> {code:java}
> @Dependent
> class Bar {
> }
> class Foo {
> @Inject
> Instance<Bar> instance;
> void ping() {
> instance.destroy(CDI.current().select(Bar.class).get());
> }
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)
More information about the cdi-dev
mailing list