-1

我试图运行一个简单的 JMS 应用程序,遗憾的是得到了 NullPointException 。以下是应用程序文件的链接:

1.生产者.java

2.SynchConsumer.java

使用的工具:Eclipse 和 GlassFish

以下是例外

Exception in thread "main" java.lang.NullPointerException
at coreservlets.Producer.main(Producer.java:96)

任何闪存都将不胜感激。

4

2 回答 2

2
connectionFactory.createConnection();

connectionFactory,即使是静态的,也永远不会被初始化。出于这个原因,它是空的,当您尝试访问其中的方法时,您会得到空指针。

两种固定方式。

如果方法是静态的,不要声明 var,只需调用:

ConnectionFactory.createConnection();

如果方法不是静态的(奇怪,对于静态的类),您必须执行以下操作:

private ConnctionFactory connectionFactory = new ConnectionFactory();
于 2013-08-24T09:32:49.693 回答
2

如果您在没有任何容器的情况下运行独立应用程序,则@Resource注入将不起作用。相反,您必须对连接工厂和队列/主题进行手动 JNDI 查找:

例子:

    final Properties initialContextProperties = new Properties();

    final String factory = "jms/ConnectionFactory";
    final String queueName = "jms/Queue";

    //

    final InitialContext ic = new InitialContext(initialContextProperties);

    final QueueConnectionFactory qcf = (QueueConnectionFactory) ic
            .lookup(factory);
    final Queue queue = (Queue) ic.lookup(queueName);

至于配置InitialContext,看这里:Glassfish V3.x 和远程独立客户端

于 2013-08-24T13:19:39.540 回答