Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
1.7.1
-
None
Description
No replies in user mail list. So I submit an issue here. And I think it's a bug as well.
I have an @ApplicationScoped bean. It observes ContainerInitialized and ContainerShutdown event.
public Kernel(){ System.out.println("Kernel constructed"); } public void onContainerInitialized(@Observes ContainerInitialized event, @Parameters List<String> parameters) { System.out.println("container initialized"); } public void onContainerShutdown(@Observes ContainerShutdown event){ System.out.println("container shutdown"); }
Then the kernel is constructed twice with the code below, one after boot, one after shutdown.
public class Test { public static void main(String[] args) { CdiContainer cdiContainer = CdiContainerLoader.getCdiContainer(); cdiContainer.boot(); // Starting the application-context enables use of @ApplicationScoped beans ContextControl contextControl = cdiContainer.getContextControl(); contextControl.startContext(ApplicationScoped.class); // You can use CDI here contextControl.stopContext(ApplicationScoped.class); cdiContainer.shutdown(); } }
If I remove the ContextControl related code. Then it is constructed only once after boot.
If I keep the ContextControl related code and remove the observation of ContainerInitialized. Then it is constructed only after shutdown.
If I keep the ContextControl related code and remove the observation of ContainerShutdown. Then it is constructed only after boot.
What I expect is it is constructed only once after boot even I keep the ContextControl related code.