资源注入不';在eclipse中运行jms示例时无法工作。

资源注入不';在eclipse中运行jms示例时无法工作。,eclipse,jakarta-ee,glassfish,jms,code-injection,Eclipse,Jakarta Ee,Glassfish,Jms,Code Injection,我想在eclipse中运行jms教程文件。我已经正确配置了glassfish并添加了jms资源。如果我在netbeans中运行它,它可以正常工作 我在eclipse中创建了一个“应用程序客户机项目” 这里是注入资源的地方: @Resource(mappedName = "jms/ConnectionFactory") private static ConnectionFactory connectionFactory; @Resource(mappedName = "jms/Queue")

我想在eclipse中运行jms教程文件。我已经正确配置了glassfish并添加了jms资源。如果我在netbeans中运行它,它可以正常工作

我在eclipse中创建了一个“应用程序客户机项目”

这里是注入资源的地方:

 @Resource(mappedName = "jms/ConnectionFactory")
 private static ConnectionFactory connectionFactory;
 @Resource(mappedName = "jms/Queue")
 private static Queue queue;
 @Resource(mappedName = "jms/Topic")
 private static Topic topic;
然后,当它到达这里时:

connection = connectionFactory.createConnection();
我得到一个NullPointerException。由于某些原因,它无法从服务器获取资源,因此它们为空

如果我在eclipse中构建项目,然后使用appclient从命令行运行该项目,它就会工作:

 appclient Producer topic 4
这里说:

应用程序客户端模块用于包含全功能客户端 JAVA™ 连接并使用Java的应用程序(非基于Web) 在服务器中定义的EE资源。当您将客户端代码放入 一个应用程序客户机模块,而不是一个简单的JAR文件 应用程序客户机从服务器的资源中获益(它没有 需要重新指定Java EE和服务器JAR文件的类路径,如下所示 以及更容易的JNDI查找(客户端容器填充 初始上下文和其他参数)


因此,看起来我的思路是正确的,但可能我缺少了一些eclipse配置。

正如您已经注意到的,如果您以独立模式运行应用程序,您将无法访问服务器资源,这是出于设计。您需要使用Glassfish
appclient
(或用于其他应用程序服务器的类似工具)才能运行Java EE客户端应用程序。 下面是另一个线程,可以帮助您配置项目以正确运行: