我试图运行一个简单的 JMS 应用程序,遗憾的是得到了 NullPointException 。以下是应用程序文件的链接:
使用的工具:Eclipse 和 GlassFish
以下是例外
Exception in thread "main" java.lang.NullPointerException
at coreservlets.Producer.main(Producer.java:96)
任何闪存都将不胜感激。
我试图运行一个简单的 JMS 应用程序,遗憾的是得到了 NullPointException 。以下是应用程序文件的链接:
使用的工具:Eclipse 和 GlassFish
以下是例外
Exception in thread "main" java.lang.NullPointerException
at coreservlets.Producer.main(Producer.java:96)
任何闪存都将不胜感激。
connectionFactory.createConnection();
connectionFactory,即使是静态的,也永远不会被初始化。出于这个原因,它是空的,当您尝试访问其中的方法时,您会得到空指针。
两种固定方式。
如果方法是静态的,不要声明 var,只需调用:
ConnectionFactory.createConnection();
如果方法不是静态的(奇怪,对于静态的类),您必须执行以下操作:
private ConnctionFactory connectionFactory = new ConnectionFactory();
如果您在没有任何容器的情况下运行独立应用程序,则@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 和远程独立客户端