[weld-dev] Application scoped bean and its lifecycle

Alex Sviridov ooo_saturn7 at mail.ru
Mon May 22 03:57:16 EDT 2017


Hi Martin

Thank you for your answer. 

1) I don't inject Test class anywhere.
2) I modified init and destroy methods:
    public void init(@Observes @Initialized(ApplicationScoped.class) Object init) {
        System.out.println(init);
        System.out.println("Test was initialized");
    }

    public void destroy(@Observes @Destroyed(ApplicationScoped.class) Object init) {
        System.out.println(init);
        System.out.println("Test was destroyed.");
    }

Now on bundle start:

Test was created.
Application context initialized.
Test was initialized
java.lang.Object at 48813e62
Test was initialized

Now on bundle stop:

java.lang.Object at 48813e62
Test was destroyed.
Test was created.
Application context destroyed.
Test was destroyed.


>Понедельник, 22 мая 2017, 10:48 +03:00 от Martin Kouba <mkouba at redhat.com>:
>
>Hi Alex,
>
>this looks really weird. Could you try to print out the event payload, 
>e.g. System.out.println(init)?
>
>Also you should be always very careful when using code inside the 
>no-args constructor of a normal-scoped bean -> it will be also executed 
>when creating a client proxy. In your case, if you do @Inject Test and 
>invoke any method then you will also see "Test was created" printed twice.
>
>Martin
>
>Dne 22.5.2017 v 08:50 Alex Sviridov napsal(a):
>> Hi all
>> 
>> I use pax-cdi -1.0.0.RC2 and weld 2.3.5.Final and this is my test class:
>> 
>> import javax.enterprise.context.ApplicationScoped;
>> import javax.enterprise.context.Destroyed;
>> import javax.enterprise.context.Initialized;
>> import javax.enterprise.event.Observes;
>> 
>> @ApplicationScoped
>> public class Test {
>> 
>>      public Test() {
>>          System.out.println("Test was created.");
>>      }
>> 
>>      public void init(@Observes @Initialized(ApplicationScoped.class) Object
>> init) {
>>          System.out.println("Test was initialized");
>>      }
>> 
>>      public void destroy(@Observes @Destroyed(ApplicationScoped.class)
>> Object init) {
>>          System.out.println("Test was destroyed.");
>>      }
>> }
>> 
>> When I start test-bundle I see the following output:
>> Test was created.
>> Test was initialized
>> Test was initialized
>> When I stop test-bundle I see the following output:
>> Test was destroyed.
>> Test was created.
>> Test was destroyed.
>> 
>> So as result this bean was two times created, two times initialized and two
>> times destroyed.
>> 
>> I expected that this bean must be once created, one initialized and once
>> destroyed.
>> 
>> Is this a bug that must be reported or my mistake?
>> 
>> -- 
>> Alex Sviridov
>> 
>> 
>> _______________________________________________
>> weld-dev mailing list
>>  weld-dev at lists.jboss.org
>>  https://lists.jboss.org/mailman/listinfo/weld-dev
>> 
>
>-- 
>Martin Kouba
>Senior Software Engineer
>Red Hat, Czech Republic


-- 
Alex Sviridov
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/weld-dev/attachments/20170522/b1493159/attachment.html 


More information about the weld-dev mailing list