14 Replies Latest reply: Mar 26, 2012 6:42 AM by Ales Justin RSS

    @Inject a managed bean from a JBoss module

    Paul Robinson Master

      Hello,

       

      I have a managed bean that lives in a JBoss module. I also have a CDI application that is deployed to AS7 (recent build of master) that attempts to @Inject this managed bean. The CDI application jar specifies a dependency on my JBoss module (where the managed bean lives) in the manifest.mf. However, when I deploy my CDI application, I see the following exception:

       

       

      16:37:00,966 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-4) MSC00001: Failed to start service jboss.deployment.unit."test.jar".WeldService: org.jboss.msc.service.StartException in service jboss.deployment.unit."test.jar".WeldService: org.jboss.weld.exceptions.DeploymentException: WELD-001408 Unsatisfied dependencies for type [MyBean] with qualifiers [@Default] at injection point [[field] @Inject org.my.cdiinmodule.module.MyApp.myBean]
          at org.jboss.as.weld.services.WeldService.start(WeldService.java:96)
          at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1824) [jboss-msc-1.0.1.GA.jar:1.0.1.GA]
          at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1759) [jboss-msc-1.0.1.GA.jar:1.0.1.GA]
          at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [:1.6.0_29]
          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [:1.6.0_29]
          at java.lang.Thread.run(Thread.java:680) [:1.6.0_29]
      Caused by: org.jboss.weld.exceptions.DeploymentException: WELD-001408 Unsatisfied dependencies for type [MyBean] with qualifiers [@Default] at injection point [[field] @Inject org.my.cdiinmodule.module.MyApp.myBean]
          at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:274)
          at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:243)
          at org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:106)
          at org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:126)
          at org.jboss.weld.bootstrap.Validator.validateBeans(Validator.java:345)
          at org.jboss.weld.bootstrap.Validator.validateDeployment(Validator.java:330)
          at org.jboss.weld.bootstrap.WeldBootstrap.validateBeans(WeldBootstrap.java:366)
          at org.jboss.as.weld.WeldContainer.start(WeldContainer.java:82)
          at org.jboss.as.weld.services.WeldService.start(WeldService.java:89)
          ... 5 more
      

       

      I assume this is happening because the CDI application can't find any implementations that satisfy the @Inject declaration. Which, I assume occurs because Weld is only looking in the CDI deployment for possible implementations. I've tested that the CDI application works if I move the managed bean into the same deployment archive as my CDI application.

       

      Can someone explain what I am doing wrong, or maybe point me at an example where this has been achieved?

       

      Thanks,

       

      Paul Robinson.