[weld-dev] Unable to find java.lang.Integer in any bean archives

Jozef Hartinger jharting at redhat.com
Mon May 25 06:08:21 EDT 2015


On 05/25/2015 11:07 AM, Emily Jiang wrote:
> Thank you Jozef! I also figured this out after I debugged the case 
> further and reread the javadoc. Would you recommend to create one bda 
> for every given class (not app class) or we should design a special 
> archive to hold all this kind of classes or it does not matter much?
You'll need to honor accessibility in these archives. Therefore, for 
example Integer and Long can share a single bean archive but e.g. a 
different class that is not accessible from Integer and Long needs to be 
put in a separate bean archive and accessibility of the classes needs to 
be reflected in the BDA graph.

One option we use in WildFly for these additional bean archives is to 
have a bean archive per classloader.
>
> As for adding the bda to the graph, from my understanding, these 
> classes should be visible to every other classes in the deployment. 
> Therefore, this new bda should be accessible to all other bdas in this 
> deployment, right?
Yes, it is true for this particular class. If however 
loadBeanDeploymentArchive() was called for a different class (e.g. for a 
class from a web archive's library jar that is not itself a bean 
archive) then, as such class is not necessarily accessible from every 
bean archive, neither should be the returned bean archive.
> Thanks
> Emily
>
> On Mon, May 25, 2015 at 6:54 AM, Jozef Hartinger <jharting at redhat.com 
> <mailto:jharting at redhat.com>> wrote:
>
>     Emily,
>
>     see the JavaDoc here:
>     http://docs.jboss.org/weld/javadoc/2.2/weld-spi/org/jboss/weld/bootstrap/spi/Deployment.html#loadBeanDeploymentArchive-java.lang.Class-
>
>     Specifically, it says:
>
>     " If the deployment archive containing the given class is not
>     currently a bean deployment archive, it must be added to the bean
>     deployment archive graph and returned."
>
>     Therefore, even though the given class is not part of an existing
>     bean archive, it should be handled by the integrator, added to the
>     bean archive graph and returned from the method.
>
>     HTH,
>
>     Jozef
>
>
>     On 05/24/2015 09:58 AM, Emily Jiang wrote:
>>     I'm trying to run the cdi tck but got an error for the following
>>     test:
>>     In the test:
>>     org.jboss.cdi.tck.tests.definition.bean.custom.CustomBeanImplementationTest
>>     Method:  arquillianBeforeClass
>>
>>
>>
>>     Caused by: org.jboss.weld.exceptions.IllegalStateException:
>>     WELD-000817: Unable to find Bean Deployment Archive for class
>>     java.lang.Integer
>>     at
>>     org.jboss.weld.util.DeploymentStructures.getOrCreateBeanDeployment(DeploymentStructures.java:39)
>>     at
>>     org.jboss.weld.bootstrap.events.AbstractBeanDiscoveryEvent.getOrCreateBeanDeployment(AbstractBeanDiscoveryEvent.java:70)
>>     at
>>     org.jboss.weld.bootstrap.events.AfterBeanDiscoveryImpl.processBean(AfterBeanDiscoveryImpl.java:86)
>>     at
>>     org.jboss.weld.bootstrap.events.AfterBeanDiscoveryImpl.finish(AfterBeanDiscoveryImpl.java:186)
>>     ... 15 more
>>
>>     It seems that Custom bean was added by an extension but the bean
>>     implements Bean<Integer>. Surely the java.lang.Interger should
>>     not be any bean archives. Can someone tell me what I might done
>>     wrong? Will integrator need to do something to cater for all of
>>     the java.x classes or Weld should handle this?
>>
>>     -- 
>>     Thanks
>>     Emily
>>     =================
>>     Emily Jiang
>>     ejiang at apache.org <mailto:ejiang at apache.org>
>>
>>
>>     _______________________________________________
>>     weld-dev mailing list
>>     weld-dev at lists.jboss.org  <mailto:weld-dev at lists.jboss.org>
>>     https://lists.jboss.org/mailman/listinfo/weld-dev
>
>
>
>
> -- 
> Thanks
> Emily
> =================
> Emily Jiang
> ejiang at apache.org <mailto:ejiang at apache.org>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/weld-dev/attachments/20150525/ada8cb4f/attachment.html 


More information about the weld-dev mailing list