I have an application which is packaged in an EAR containing many JARs (with EJBs, libraries, 3rd-party-libraries, ...) and a single WAR (again containing some other JARs). The application is deployed in an JEE7 container (Wildfly 8.0.0.Final) and using CDI (Weld 2.1.2.Final shipped with Wildfly).
In my understanding, Weld is active application-wide and has a single application-wide view. So it doesn't matter where I want to use CDI - it works.
But there are some indications which lead to the assumption that this is not true. E.g. the toString
-method of the BeanManager
shows different output in different modules:
When using the BeanManager
in some module which is packaged in the war I get
Weld BeanManager for test-ear-1.0-SNAPSHOT.ear/test-webui-frontend-1.0-SNAPSHOT.war/WEB-INF/lib/test-webui-backend-1.0-SNAPSHOT.jar [bean count=76]
.
If it is used in a library directly contained in the EAR:
Weld BeanManager for test-ear-1.0-SNAPSHOT.ear/test-ejb3-dao-1.0-SNAPSHOT.jar/ [bean count=224]
.
So it seems that these BeanManagers
are "responsible for" different parts of the application. Is this true?
for ...
of thetoString
-output is the classloader which is active in the current context. But does this mean that the application server holds many different "CDI-applications" (orBeanManagers
) which handle their CDI-contexts (like the application-scope) completely separately? – Nims