[ 
https://issues.apache.org/jira/browse/DELTASPIKE-1199?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15451470#comment-15451470
 ] 

Seto edited comment on DELTASPIKE-1199 at 8/31/16 8:04 AM:
-----------------------------------------------------------

The actual problem is the problem you mention. Then the bean are constructed 
twice.
If the Kernel is constructed twice. It may cause some unexpected problem. 
Because there's other logic in the Kernel class.

The kernel initialization and cleanup logic is triggered by the container 
initialized or shutdown in my implementation.
The @Inject in the kernel are injected twice as well. 
Or maybe could you tell me how should I solve the problem?
-Is there a ApplicationScoped context start or stop event?-


was (Author: seto):
The actual problem is the problem you mention. Then the bean are constructed 
twice.
If the Kernel is constructed twice. It may cause some unexpected problem. 
Because there's other logic in the Kernel class.

The kernel initialization and cleanup logic is triggered by the container 
initialized or shutdown in my implementation.
The @Inject in the kernel are injected twice as well. 
Or maybe could you tell me how should I solve the problem?
Is there a ApplicationScoped context start or stop event?

>  Problems with ContextControl and Weld ContainerInitialized, 
> ContainerShutdown event.
> -------------------------------------------------------------------------------------
>
>                 Key: DELTASPIKE-1199
>                 URL: https://issues.apache.org/jira/browse/DELTASPIKE-1199
>             Project: DeltaSpike
>          Issue Type: Bug
>          Components: CdiControl
>    Affects Versions: 1.7.1
>            Reporter: Seto
>
> 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. 
> {code:title=Kernel.java|borderStyle=solid}
> 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");
> }
> {code}
> Then the kernel is constructed twice with the code below, one after boot, one 
> after shutdown.
> {code:title=Test.java|borderStyle=solid}
> 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();
>     }
> }
> {code}
> 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.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to