Uploaded image for project: 'Application Server 7'
  1. Application Server 7
  2. AS7-1373

Setting EJB's InjectionTarget does not work

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • Blocker
    • 7.0.1.Final
    • 7.0.0.Final
    • CDI / Weld
    • None
    • Release Notes

    Description

      Having an EJB

      @Singleton
      public class Bus {
      
          private boolean initialized = false;
      
          public boolean isInitialized() {
              return initialized;
          }
      
          public void setInitialized(boolean initialized) {
              this.initialized = initialized;
          }
      }
      

      and a CDI extension that wraps EJB's InjectionTarget

      public class WrappingExtension implements Extension {
      
          public void wrapInjectionTarget(@Observes ProcessInjectionTarget<Bus> event)
          {
              final InjectionTarget<Bus> injectionTarget = event.getInjectionTarget();
              event.setInjectionTarget(new ForwardingInjectionTarget<Bus>() {
      
                  @Override
                  public void inject(Bus instance, CreationalContext<Bus> ctx) {
                      super.inject(instance, ctx);
                      instance.setInitialized(true);
                  }
      
                  @Override
                  public InjectionTarget<Bus> getDelegate() {
                      return injectionTarget;
                  }
              });
          }
      }
      

      the InjectionTarget implementation is never invoked. When the Bus bean is changed to a CDI bean (@Singleton annotation is removed), the InjectionTarget implementation is invoked as expected.

      Attachments

        Activity

          People

            sdouglas1@redhat.com Stuart Douglas
            rhn-engineering-jharting Jozef Hartinger
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: