[jboss-as7-dev] EJB 3 Proxies

Carlo de Wolf cdewolf at redhat.com
Tue Jan 18 05:44:48 EST 2011


On 01/18/2011 04:22 AM, David M. Lloyd wrote:
> A question first.  Is there ever a reason to bind a proxy (what you are
> calling a "true proxy", I guess) directly into JNDI?  It seems as though
> binding an object factory would generally be the course of action, so
> that if you look up a reference to some EJB but you're in a different
> class loader, you get the proper instance.  Am I right?
A local view proxy doesn't need to come from an ObjectFactory. It always 
lives in the same class loader.
It's a small performance benefit.
> To answer your question, yes we will have probably not one but two
> services per JNDI binding; but to put your heart at ease, a service in
> MSC is much smaller, faster, and more predictable than a MC service.
The reason I ask is not because of predictability. It's more that from a 
servitor p.o.v. the bindings are a single outside gate. Both in terms of 
dependencies and state this gate can either be open or closed.

Carlo
> We'll have to iron out the nitty gritty of bindings on interactive chat
> though, there's too many fine details to hit them all by email (but
> we'll be sure that the wiki pages are updated once all the facts are known).
>
> On 01/17/2011 04:18 AM, Carlo de Wolf wrote:
>> The goal is to provide the functionality as outlined in EJB 3.1 FR 4.3.3
>> getBusinessObject and getEJB* methods, plus 4.4 Global JNDI Access.
>>
>> EJB Servitors provide an entry point InvocationDispatcher. Behind this
>> entry point the local system interceptors are invoked. In essence an EJB
>> Servitor is a 'singleton' ManagedBean
>>
>> For the purpose of JNDI the distinction is made between JNDI objects and
>> true proxies. JNDI objects can be proxies, LinkRef or ObjectFactory. A
>> true proxy is either a direct link or a lazy link to the servitor via
>> its InvocationDispatcher interface.
>>
>> The JNDI names where the JNDI objects are bound are generated by an ejb3
>> component. Who binds these objects is currently undecided.
>> The generation of JNDI objects is delegated out of ejb3 to another
>> construct.
>>
>> Within an EJB the user can call upon getBusinessObject for example. In
>> this case a true proxy needs to be returned. Again ejb3 delegates out to
>> another construct.
>>
>> Possibly the JNDI object and proxy factories can be co-located within
>> one component.
>>
>> Note, there is a risk of overlap with remote invocation. Remote
>> invocation is explicitly beyond scope of the EJB servitor dispatcher.
>>
>> Remote proxies are special InvocationDispatchers which can have client-
>> and server side interceptors. The client side interceptors prepare for
>> marshaling of the current invocation context (transaction, security
>> etc). The server side interceptors transform the marshaled context into
>> the local context equivalent.
>>
>> In short we need to design a way to bind the EJB views.
>>
>> Do we really need a service per JNDI binding (as per [1])?
>>
>> Carlo
>>
>> [1]
>> http://community.jboss.org/wiki/JavaEEImplementationTechnicalRequirements
>> _______________________________________________
>> jboss-as7-dev mailing list
>> jboss-as7-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/jboss-as7-dev
>




More information about the jboss-as7-dev mailing list