Seam JMS - Inject into application scoped bean?
pgmjsd Sep 20, 2011 2:47 PMI'm trying out Seam JMS resource injection in my new CDI/Weld application and I'm having a little trouble injecting TopicProducer and Session (so I can create messages) into an @ApplicationScoped bean like this:
@ApplicationScoped public class MyBean { @Inject private Logger log; @Inject @JmsDestination(jndiName="topic/myTopic") private TopicPublisher topicPublisher; @Inject @JmsSession(transacted=false, acknowledgementType=Session.CLIENT_ACKNOWLEDGE) private Session session; ... yadda yadda ... }
Weld says the following:
14:33:09,860 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-8) MSC00001: Failed to start service jboss.deployment.unit."my-webapp.war".WeldService: org.jboss.msc.service.StartException in service jboss.deployment.unit."my-webapp.war".WeldService: org.jboss.weld.exceptions.DefinitionException: WELD-001502 Resource producer field [Resource Producer Field [ConnectionFactory] with qualifiers [@Any @Module] declared as [[field] @Resource @Module @Produces @ApplicationScoped private org.jboss.seam.jms.impl.inject.ConnectionProducer.cf]] must be @Dependent scoped at org.jboss.as.weld.services.WeldService.start(WeldService.java:96) at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1765) at org.jboss.msc.service.ServiceControllerImpl$ClearTCCLTask.run(ServiceControllerImpl.java:2291) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [:1.6.0_27] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [:1.6.0_27] at java.lang.Thread.run(Thread.java:662) [:1.6.0_27] Caused by: org.jboss.weld.exceptions.DefinitionException: WELD-001502 Resource producer field [Resource Producer Field [ConnectionFactory] with qualifiers [@Any @Module] declared as [[field] @Resource @Module @Produces @ApplicationScoped private org.jboss.seam.jms.impl.inject.ConnectionProducer.cf]] must be @Dependent scoped at org.jboss.weld.bean.builtin.ee.EEResourceProducerField.checkEEResource(EEResourceProducerField.java:133) at org.jboss.weld.bean.builtin.ee.EEResourceProducerField.initialize(EEResourceProducerField.java:125) at org.jboss.weld.bootstrap.AbstractBeanDeployer.deploy(AbstractBeanDeployer.java:119) at org.jboss.weld.bootstrap.BeanDeployment.deployBeans(BeanDeployment.java:227) at org.jboss.weld.bootstrap.WeldBootstrap.deployBeans(WeldBootstrap.java:378) at org.jboss.as.weld.WeldContainer.start(WeldContainer.java:81) at org.jboss.as.weld.services.WeldService.start(WeldService.java:89) ... 5 more
Any ideas? I'm not really sure what Weld is complaining about.