[webbeans-dev] Injection over Lookup

Andrew Lee Rubinger alr at jboss.org
Tue Jan 27 02:43:44 EST 2009


Pete Muir wrote:
> 
> On 24 Jan 2009, at 09:07, Ales Justin wrote:
> 
>> Injecting it how?
>>
>> Currently the entry point is ServletContext,
>> which holds MC's Kernel and DeploymentUnit as its attribute.
>>
>> The WB pieces that reside in WB app are not (yet) 'connected' to MC 
>> directly.
>> Only the custom WB deployers are.
>> See wb-int/jbossas/ and its vdf package for more details.
>>
>> WRT to autowiring, I agree, there is no need to do lookup by name,
> 
> I was just following ALR's example when I did this :-p

My example had no lookup code; all was injected/installed via MC ;)

For instance, I'd been expecting JBossEjbResolver to itself be an MC 
bean, where the EjbReferenceResolver would be an injected instance member.

Like I do in ejb3-mc-int:

...declares the EjbReferenceResolver impl:
   <bean name="org.jboss.ejb3.EjbReferenceResolver" 
class="org.jboss.ejb3.common.resolvers.spi.EjbReferenceResolver">
     <constructor 
factoryClass="org.jboss.ejb3.common.resolvers.spi.EjbReferenceResolverFactory"
                  factoryMethod="newInstance">
 
<parameter>org.jboss.ejb3.common.resolvers.plugins.FirstMatchEjbReferenceResolver</parameter>
     </constructor>
   </bean>

...injects the EjbReferenceResolver into something that uses it.
   <bean name="org.jboss.ejb3.EjbReferenceAnnotationPlugin"
 
class="org.jboss.ejb3.mcint.metadata.plugins.EjbReferenceAnnotationPlugin">
     <constructor>
       <parameter><inject bean="org.jboss.ejb3.EjbReferenceResolver" 
/></parameter>
     </constructor>
   </bean>

I bring this up as a general point as I'd been looking things over.  If 
you can get JBossEjbResolver from MC injected into 
ServletJBossEjbResolver, then you can avoid lookups altogether.

S,
ALR

> 
>> a class would be enough - as long as there is only one matching instance.
> 
> I don't know the class names to use, tell me, or make the change :-)
> 
>>
>>
>> Andrew Lee Rubinger wrote:
>>> Hey guys:
>>> Is there a reason we're doing stuff like:
>>> JBossEjb.lookupEjbReferenceResolver(controller).resolveEjb(topLevelDeploymentUnit, 
>>> new EjbReference(beanName, beanInterface, mappedName))
>>> ...instead of injecting the reference resolver?
>>> http://anonsvn.jboss.org/repos/jbossas/projects/webbeans-ri-int/trunk/ejb/src/main/java/org/jboss/webbeans/integration/ejb/JBossEjbResolver.java There 
>>> are a few other examples where this type of lookup is used.  Given 
>>> only one implementing class per interface, you can even rely upon MC 
>>> to do the autowiring.
>>> S,
>>> ALR
>> _______________________________________________
>> webbeans-dev mailing list
>> webbeans-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/webbeans-dev
> 

-- 
Andrew Lee Rubinger
Sr. Software Engineer
JBoss, a division of Red Hat, Inc.
http://exitcondition.alrubinger.com



More information about the weld-dev mailing list