It's the interface that allows bean instances to be removed when CDI scopes 
end.  @ManagedBean and @Stateful can have their lifecycle managed in such a way.

-David

On Mar 12, 2012, at 12:04 PM, Romain Manni-Bucau wrote:

> the goal was mainly to be able to @Inject EJBs
> 
> can you give some points regarding this interface please?
> 
> - Romain
> 
> 
> 2012/3/12 David Blevins <[email protected]>
> 
>> 
>> On Mar 12, 2012, at 10:05 AM, [email protected] wrote:
>> 
>>> Author: rmannibucau
>>> Date: Mon Mar 12 15:05:59 2012
>>> New Revision: 1299702
>>> 
>>> URL: http://svn.apache.org/viewvc?rev=1299702&view=rev
>>> Log:
>>> isn't BeanContext.Removable only for stateful beans?
>> 
>> Works for @ManagedBean as well in our impl.
>> 
>> 
>> -David
>> 
>>> Modified:
>>> 
>> openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/EjbHomeProxyHandler.java
>>> 
>>> Modified:
>> openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/EjbHomeProxyHandler.java
>>> URL:
>> http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/EjbHomeProxyHandler.java?rev=1299702&r1=1299701&r2=1299702&view=diff
>>> 
>> ==============================================================================
>>> ---
>> openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/EjbHomeProxyHandler.java
>> (original)
>>> +++
>> openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/EjbHomeProxyHandler.java
>> Mon Mar 12 15:05:59 2012
>>> @@ -27,6 +27,7 @@ import org.apache.openejb.core.managed.M
>>> import org.apache.openejb.core.singleton.SingletonEjbHomeHandler;
>>> import org.apache.openejb.core.stateful.StatefulEjbHomeHandler;
>>> import org.apache.openejb.core.stateless.StatelessEjbHomeHandler;
>>> +import org.apache.openejb.jee.SessionType;
>>> import org.apache.openejb.spi.ApplicationServer;
>>> import org.apache.openejb.util.LogCategory;
>>> import org.apache.openejb.util.Logger;
>>> @@ -129,7 +130,7 @@ public abstract class EjbHomeProxyHandle
>>> 
>>>            InterfaceType objectInterfaceType =
>> this.interfaceType.getCounterpart();
>>> 
>>> -            EjbObjectProxyHandler handler =
>> newEjbObjectHandler(getBeanContext(), primaryKey, objectInterfaceType,
>> this.getInterfaces(), mainInterface);
>>> +            EjbObjectProxyHandler handler =
>> newEjbObjectHandler(getBeanContext(), primaryKey, objectInterfaceType,
>> getInterfaces(), mainInterface);
>>> 
>>>            // TODO Is it correct for ManagedBean injection via managed
>> bean class?
>>>            if ((InterfaceType.LOCALBEAN.equals(objectInterfaceType) ||
>> getBeanContext().getComponentType().equals(BeanType.MANAGED))
>>> @@ -139,7 +140,9 @@ public abstract class EjbHomeProxyHandle
>>>                List<Class> proxyInterfaces = new
>> ArrayList<Class>(handler.getInterfaces().size() + 1);
>>>                proxyInterfaces.addAll(handler.getInterfaces());
>>>                proxyInterfaces.add(IntraVmProxy.class);
>>> -                proxyInterfaces.add(BeanContext.Removable.class);
>>> +                if
>> (SessionType.STATEFUL.equals(getBeanContext().getComponentType())) {
>>> +                    proxyInterfaces.add(BeanContext.Removable.class);
>>> +                }
>>>                return
>> ProxyManager.newProxyInstance(proxyInterfaces.toArray(new Class[]{}),
>> handler);
>>>            }
>>> 
>>> 
>>> 
>>> 
>> 
>> 

Reply via email to