无法使用资源注释在JBoss 6.1.0中注入JMS QueueConnectionFactory
我花了很多时间来解决JBoss 6.1.0的问题,在我的会话bean中注入JMS连接工厂。 我正在使用JBoss 6.1.0和默认配置文件并在debian中运行它。
剪切我的代码是:
@Resource(name="java:/QueueConnectionFactory") private QueueConnectionFactory factory
在jboss6 / server / default / deploy / hornetq / hornetq-jms.xml中:
true
在部署我的ear-file时,我收到此错误:
既没有指定任何映射名称/ lookup / jndi-name也没有任何ResourceProvider可以处理名为env / java的resource-ref:/ javax.jms.QueueConnectionFactory类型的QueueConnectionFactory
尽管队列工厂在管理控制台中可见,但它无法在我的会话bean中注入队列连接工厂。
最后我找到了我的问题的答案:
在@Resource
注释中,还需要具有真实JNDI资源名称的mappedName
属性。
这是一个可以生成JMS的简单MDB,它可以在JBoss 6.1.0中运行
这里的工作代码: https : //github.com/OpenRAP/jboss6-jms-chat
@MessageDriven(activationConfig = { @ActivationConfigProperty( propertyName = "destinationType", propertyValue = "javax.jms.Queue"), @ActivationConfigProperty( propertyName = "destination", propertyValue = "queue/questionqueue"), @ActivationConfigProperty(propertyName = "subscriptionDurability", propertyValue = "durable")}) public class ChatBean implements MessageListener { @Resource(mappedName = "java:/JmsXA") private ConnectionFactory queueConnectionFactory; @Resource(mappedName = "queue/answerqueue") private Queue answerQueue; public void onMessage(Message message) {} }