无法使用资源注释在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) {} }