注入JMS @Resource时,Glassfish中的NullPointer

时间:2011-11-16 12:57:42

标签: java-ee glassfish jms

我正在尝试编写一个非常简单的JMS应用程序,以便在Glassfish上进行部署,以此来了解JMS。

在课堂上发送消息我有以下内容:

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

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

这会导致NullPointer,这是我第一次尝试访问工厂。但是,如果我尝试使用JNDI查找对象,它可以正常工作。这个类只是一个POJO,由一个在简单的Web应用程序中运行的JSP访问。

是因为它是POJO而不是,例如,这是一个失败的servlet?

我原以为它在Glassfish内部署和运行的事实就足够了 - 显然我错了......

1 个答案:

答案 0 :(得分:5)

使用name代替mappedNamename是JNDI名称,mappedName是其他名称。见the API doc

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

我刚刚读到你的课是一个简单的POJO。您的类必须是由容器管理的某个bean才能使这些注释工作。喜欢@Stateless,@ Stateful,@ Singleton。