[cdi-dev] Doubt about bean discovery default behaviour

Pete Muir pmuir at redhat.com
Thu May 9 09:59:42 EDT 2013


On 9 May 2013, at 14:59, Arne Limburg <arne.limburg at openknowledge.de> wrote:

> Hi,
> 
> This is an issue for all JSR-330 jars that are no CDI jars (i.e. All
> spring and guice applications). They cannot be deployed in a Java EE 7
> server currently.
> 
> Maybe we should remove @javax.inject.Singleton from being a bean-defining
> annotation. Or which annotation is causing the issue here?

It's the @Dependent and @Singleton annotations I think.

> 
> Regards,
> Arne
> 
> Am 09.05.13 15:51 schrieb "Pete Muir" unter <pmuir at redhat.com>:
> 
>> Hi
>> 
>> Apologies for the delay in responding.
>> 
>> This is indeed an issue CDI 1.1, and is something that we were aware of
>> and raised as a potential issue when discussing this feature.
>> 
>> Fortunately we do have the "get out clause" in the spec that you mention,
>> which I believe we can use to essentially produce a blacklist of jars in
>> the app server that shouldn't be scanned (such as guava).
>> 
>> JJ, Jozef, Stuart, WDYT?
>> 
>> Also, any ideas of how we can address this better in the spec in the MR?
>> 
>> Pete
>> 
>> On 3 May 2013, at 20:45, Michel Graciano <michel.graciano at betha.com.br>
>> wrote:
>> 
>>> Hi JJ,
>>> I have create a sample app to reproduce it and uploaded to my
>>> github[1]. It is a really simple sample where I have no classes, just a
>>> WAR with guava-14.0.1.jar in the WEB-INF/lib folder.
>>> When I try to deploy the app I have the following exception:
>>> 
>>> org.jboss.weld.exceptions.DeploymentException: WELD-001408 Unsatisfied
>>> dependencies for type [Set<Service>] with qualifiers [@Default] at
>>> injection point [[BackedAnnotatedParameter] Parameter 1 of
>>> [BackedAnnotatedConstructor] @Inject
>>> com.google.common.util.concurrent.ServiceManager(Set<Service>)]
>>> 
>>> I have tested GF4 with the property you sent me before and it worked.
>>> Now I can deploy our app. I am facing another issues with GF now but
>>> looks like it is not related to CDI, so it is story for another thread
>>> in another place.
>>> 
>>> Now the question is: Is this behaviour expected by spec? It looks like
>>> a serious regression to me, since the impact is huge for most
>>> applications and no clear warning or advise is given in the spec in this
>>> matter.
>>> The most close words about this I found in the spec I downloaded at
>>> cdi-spec.org is 'For compatibility with Contexts and Dependency 1.0,
>>> products must contain an option to cause an archive to be ignored by the
>>> container when no beans.xml is present.', but it is not totally clear
>>> to me, mainly because it is now up to the container to define something
>>> that I am used to take for granted in CDI 1.0.
>>> 
>>> I haven't tested it outside GF, maybe all this is just GF issues, so I
>>> am sorry for any inconvenience.
>>> 
>>> Regards
>>> [1]https://github.com/mgraciano/cdi-1.1-test/tree/master/GF4IssueTest
>>> -- 
>>> Michel Graciano 
>>> Pesquisa e Desenvolvimento
>>> Betha Sistemas Ltda.
>>> Telefone: +55 (48) 3431-0733
>>> Ramal: 4863 
>>> 
>>> From: "JJ Snyder" <j.j.snyder at oracle.com>
>>> To: cdi-dev at lists.jboss.org
>>> Sent: Thursday, May 2, 2013 11:29:40 AM
>>> Subject: Re: [cdi-dev] Doubt about bean discovery default behaviour
>>> 
>>> Michel,
>>> Auto-discovery is enabled by default for GlassFish.  So it will scan
>>> all archives in the application for bean-defining annotations.  You can
>>> disable this by doing the following:
>>> asadmin set 
>>> configs.config.server-config.cdi-service.enable-implicit-cdi=false
>>> 
>>> Can you send me your app?  I'll take a deeper look into it.
>>> 
>>> JJ
>>> 
>>> On 04/29/2013 01:01 PM, Michel Graciano wrote:
>>> Hi all,
>>> I have been reading the CDI spec and did some little tests with a
>>> prototype we have here and I am facing a issue when I deploy our
>>> application at GF 4 (which has guava as ine of the dependencies):
>>> 
>>> org.jboss.weld.exceptions.DeploymentException: WELD-001408 Unsatisfied
>>> dependencies for type [Set<Service>] with qualifiers [@Default] at
>>> injection point [[BackedAnnotatedParameter] Parameter 1 of
>>> [BackedAnnotatedConstructor] @Inject
>>> com.google.common.util.concurrent.ServiceManager(Set<Service>)]
>>> 
>>> Basically I am facing it because guava has some classes annotated with
>>> @Inject and the container by default are scanning all the deps.
>>> 
>>> I have read the spec and for me it is not clear what the default
>>> behaviour is, if the container should or not scan all the dependencies
>>> when my app is supposedly following 1.0 spec (see our beans.xml above).
>>> Digging a little bit more, I found a issue [1] which says basically that
>>> 'Auto-discover is false by default in CDI 1.1 and the attribute is
>>> required...', which for me means that by default the container should
>>> work as CDI 1.0 at this matter. Reading the spec a little further I
>>> found 'For compatibility with Contexts and Dependency 1.0, products must
>>> contain an option to cause an archive to be ignored by the container
>>> when no beans.xml is present.' (which is the case for guava library)
>>> which could means that by default the container will not work as
>>> expected by CDI 1.0, so we have an incompatible change here.
>>> 
>>> Our beans.xml file has just this content:
>>> 
>>> <?xml version="1.0" encoding="UTF-8"?>
>>> <beans xmlns="http://java.sun.com/xml/ns/javaee"
>>>    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>>    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
>>> http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
>>> </beans>
>>> 
>>> My question here is: Am I facing a issue at Weld/GF 4
>>> (glassfish-4.0-b86) or it is the default behaviour expected for CDI 1.1
>>> specification?
>>> 
>>> IMHO this behaviour should be clear at the specification, maybe
>>> following as did by JSR 344 adding a 'Breakages in Backward
>>> Compatibility' section for changelog section if it is the case.
>>> 
>>> I am sorry if this question have already been asked, but I was unable
>>> to find it (I swear I tried :).
>>> 
>>> Thanks in advance.
>>> [1] https://issues.jboss.org/browse/CDI-321
>>> -- 
>>> Michel Graciano 
>>> Pesquisa e Desenvolvimento
>>> Betha Sistemas Ltda.
>>> 
>>> 
>>> _______________________________________________
>>> cdi-dev mailing list
>>> 
>>> cdi-dev at lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/cdi-dev
>>> 
>>> _______________________________________________
>>> cdi-dev mailing list
>>> cdi-dev at lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/cdi-dev
>>> 
>>> _______________________________________________
>>> cdi-dev mailing list
>>> cdi-dev at lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/cdi-dev
>> 
>> 
>> _______________________________________________
>> cdi-dev mailing list
>> cdi-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/cdi-dev
> 



More information about the cdi-dev mailing list