Невозможно внедрить JMS QueueConnectionFactory в JBoss 6.1.0 с аннотацией ресурса - PullRequest
1 голос
/ 10 февраля 2012

Я тратил много времени на решение проблемы с JBoss 6.1.0 для внедрения фабрики соединений JMS в мой сессионный компонент. Я использую JBoss 6.1.0 с профилем по умолчанию и запускаю его в Debian.

Фрагмент моего кода:

@Resource(name="java:/QueueConnectionFactory")
private QueueConnectionFactory factory

Существует в jboss6 / server / default / deploy / hornetq / hornetq-jms.xml:

<connection-factory name="QueueConnectionFactory" signature="queue">
        <xa>true</xa>
        <connectors>
           <connector-ref connector-name="in-vm"/>
        </connectors>
        <entries>
            <entry name="java:/QueueConnectionFactory"/>           
        </entries>
    </connection-factory>

При развертывании моего наушника я получаю эту ошибку:

Ни указанное сопоставленное имя / lookup / jndi-name, ни какой-либо ResourceProvider не могли обработать ref-ресурс с именем env / java: / QueueConnectionFactory типа javax.jms.QueueConnectionFactory

Он не может внедрить фабрику соединений в очередь в моем сессионном компоненте, несмотря на то, что фабрика очередей видна в консоли администратора.

Ответы [ 2 ]

2 голосов
/ 11 февраля 2012

Наконец я нашел ответ на свой вопрос:

В аннотации @Resource также необходим атрибут mappedName с реальным именем ресурса JNDI.

0 голосов
/ 24 января 2014

Вот простой MDB, который может создавать JMS, и он работает в 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) {}
}
...