2012-01-18 111 views
4

我试图运行与JMS教程,我有一个问题。我正在使用带有最新JavaEE SDK的最新Glassfish版本。我创建的GlassFish管理控制台ConnectionFactory资源,然后尝试使用下面的调用初始化它的代码:JMS ConnectionFactory空指针异常

@Resource(mappedName = "jms/ExampleConnectionFactory") 
private static ConnectionFactory connectionFactory; 

但我在下面的行获得NullPointerException

Connection connection = connectionFactory.createConnection(); 

我该如何解决这个问题?提前致谢。

+0

  • 库添加到您的项目(调整路径)?如果您处于会话bean,消息驱动的bean或Web组件中,请不要声明资源static:http://docs.oracle.com/javaee/6/tutorial/doc/bncgl.html#bncgm – perissf 2012-01-18 16:50:49

  • +0

    @perissf,我已经删除了静态分类器,但这并没有解决问题,connectionFactory仍然为空。 – Egor 2012-01-19 06:25:23

    +0

    它应该工作。你确定你使用正确的进口吗?您可以发布更多信息/关于如何在GlassFish中设置ConnectioFactory的详细信息? – perissf 2012-01-19 07:14:55

    回答

    0

    我在尝试让RESTful Web服务将消息放入JMS队列时遇到了此问题。

    对我来说,我在这里遵循本教程(http://www.tricoder.net/blog/?p=128),我需要在我的public class...代码上面放置@Stateless注释。

    出于某种原因(我不知道为什么,因为我完全是新手),@Stateless是依赖注入工作所必需的。 (它说,在上面的来源)

    编辑:即使与此,同时开发我的应用程序,我有时会有NullPointerException。重新启动Glassfish会在发生这种情况时解决问题。

    0

    JMS消费者,

    尝试puting的@Stateless注解到您的类并添加javax.ejb.Stateless封装库。

    我希望你觉得这个很有用。

    0

    你需要做两件事情:

    1. 指定属性的InitialContext:

      属性道具=新特性(); props.setProperty(Context.INITIAL_CONTEXT_FACTORY,“com.sun.enterprise.naming.SerialInitContextFactory”); 上下文initialContext = new InitialContext(props);如果您使用的是资源

    C:\installs\glassfish\glassfish-4.1\glassfish\lib\gf-client.jar