0 Replies Latest reply on May 29, 2011 10:10 PM by ozizka.zizka.seznam.cz

    X @ThreadScoped in @ThreadScoped doesn't work?

    ozizka.zizka.seznam.cz

      I have the following code, which creates two threads, which are injected with a @ThreadScoped bean, which in turn also has @ThreadScoped bean.
      But the nested @ThreadScoped bean is not threadscoped - both threads share the same bean:


        Thread thread B / MyBean #9996039 in MyService #14222419
        Thread thread A / MyBean #9996039 in MyService #29945686
      



      Is this expected or a bug?


      Thanks, Ondra



      @Singleton
      public class App 
      {
          static WeldContainer wc;
                      
          public static void main( String[] args )
          {
              System.out.println( "Hello World!" );
              wc = new Weld().initialize();
              wc.instance().select(App.class).get().main2(args);
          }
                      
              @Inject MyThread mt1;
              @Inject MyThread mt2;
      
              private void main2(String[] args) {
                      new Thread( mt1, "thread A" ).start();
                      new Thread( mt2, "thread B" ).start();
              }
      
      }
      
      class MyThread implements Runnable {
                      
              @Inject Instance<MyService> myService;
                      
              @Override
              public void run() {
                      System.out.println("  Thread " + Thread.currentThread().getName() + " / " +  myService.get().quack()  );
              }
      }
      
      @ThreadScoped
      class MyService {
                      
              @Inject Instance<MyBean> myBean;
                      
              public String quack(){
                      return "MyBean #" + myBean.get().hashCode() + " in MyService #" + this.hashCode();
              }
      }
      
      
      @ThreadScoped
      class MyBean {
      }