【问题标题】:JMS ConnectionFactory NullPointerExceptionJMS ConnectionFactory NullPointerException
【发布时间】:2012-02-12 22:37:32
【问题描述】:

我正在尝试使用 JMS 运行教程,但遇到了问题。我正在使用最新的 Glassfish 版本和最新的 JavaEE SDK。我在 Glassfish 管理控制台中创建了一个 ConnectionFactory 资源,然后尝试使用以下调用在代码中实例化它:

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

但我在以下行得到NullPointerException:

Connection connection = connectionFactory.createConnection();

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

【问题讨论】:

  • 你在哪里使用资源?如果您在会话 bean、消息驱动 bean 或 Web 组件中,请不要将资源声明为静态:docs.oracle.com/javaee/6/tutorial/doc/bncgl.html#bncgm
  • @perissf,我已经删除了静态分类器,但这并没有解决问题,connectionFactory 仍然为空。
  • 它应该可以工作。你确定你使用的是正确的进口吗?您能否发布有关如何在 GlassFish 中设置 ConnectioFactory 的更多信息/详细信息?
  • 您如何获得对具有此声明的类的实例的引用?

标签: java glassfish jms nullpointerexception


【解决方案1】:

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

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

出于某种原因(我不知道为什么,因为我对此完全陌生)@Stateless 是依赖注入工作所必需的。 (上面的源代码中是这样说的)

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

【讨论】:

    【解决方案2】:

    JMS 消费者,

    尝试将@Stateless 注解添加到您的类中并添加javax.ejb.Stateless 包库。

    我希望你觉得这很有用。

    【讨论】:

      【解决方案3】:

      你需要做两件事:

      1. 指定 InitialContext 的属性:

        属性 props = new Properties(); props.setProperty(Context.INITIAL_CONTEXT_FACTORY, "com.sun.enterprise.naming.SerialInitContextFactory"); 上下文initialContext = new InitialContext(props);

      2. 将库添加到您的项目(调整路径):

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-04-23
        • 2015-07-19
        • 2015-07-01
        • 2020-10-20
        • 2015-02-24
        • 2011-12-25
        • 2014-09-17
        • 1970-01-01
        相关资源
        最近更新 更多