NullPointer в Glassfish при внедрении JMS @Resource - PullRequest
2 голосов
/ 16 ноября 2011

Я пытаюсь написать очень простое приложение JMS для развертывания на Glassfish, чтобы научиться работать с JMS.

В классе мне отправляется сообщение:

    @Resource(mappedName="jms/MyConnectionFactory")
    public static QueueConnectionFactory factory;

    @Resource(mappedName="jms/MyQueue")
    public static Queue queue;

В результате получается NullPointer, когда я впервые пытаюсь получить доступ к фабрике.Однако, если я пытаюсь найти объект с помощью JNDI, он работает.Этот класс является просто POJO, к которому обращается JSP, работающий в простом веб-приложении.

Это происходит из-за того, что это ошибка POJO, а не, например, сервлета?

Я предполагал, что того факта, что он был развернут и запущен внутри Glassfish, будет достаточно - очевидно, я ошибаюсь ...

1 Ответ

5 голосов
/ 16 ноября 2011

Используйте name вместо mappedName.name - это имя JNDI, mappedName - это что-то еще.См. API документ

@Resource(name="jms/MyConnectionFactory")
public static QueueConnectionFactory factory;

Я только что прочитал, что ваш класс является простым POJO.Ваш класс должен быть компонентом, управляемым контейнером, чтобы эти аннотации работали.Как @Stateless, @Stateful, @Singleton.

...