【发布时间】:2014-02-22 23:34:20
【问题描述】:
我一直在使用 GlassFish 服务器处理项目,以使用我的 java 代码连接 JMS 服务。 我已经创建了连接工厂、队列和主题,如下所述。
1. jms/GlassFishBookConnectionFactory connectionfactory
2. jms/GlassFishBookQueue queue
3. jms/GlassFishBookTopic
这是我连接到上述连接的 JMS 服务的 java 代码。我一直在按照给定的 url 的步骤来处理它。 http://www.packtpub.com/article/setting-glassfish-jms-and-working-message-queues 我刚开始研究JMS服务。我在这方面工作并不完美。我已经下载了 java.jms jar 文件并将其解压缩。
package net.ensode.glassfishbook;
import javax.annotation.Resource;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jms.*;
public class MessageSender
{
@Resource(mappedName = "jms/GlassFishBookConnectionFactory")
private static ConnectionFactory connectionFactory;
@Resource(mappedName = "jms/GlassFishBookQueue")
private static Queue queue;
public void produceMessages()
{
MessageProducer messageProducer;
TextMessage textMessage;
try
{
Connection connection = connectionFactory.createConnection();
Session session = connection.createSession(false,
Session.AUTO_ACKNOWLEDGE);
messageProducer = session.createProducer(queue);
textMessage = session.createTextMessage();
textMessage.setText("Testing, 1, 2, 3. Can you hear me?");
System.out.println("Sending the following message: "
+ textMessage.getText());
messageProducer.send(textMessage);
textMessage.setText("Do you copy?");
System.out.println("Sending the following message: "
+ textMessage.getText());
messageProducer.send(textMessage);
textMessage.setText("Good bye!");
System.out.println("Sending the following message: "
+ textMessage.getText());
messageProducer.send(textMessage);
messageProducer.close();
session.close();
connection.close();
}
catch (JMSException e)
{
e.printStackTrace();
}
}
public static void main(String[] args)
{
new MessageSender().produceMessages();
}
}
目前当我编译这段代码时。我收到类似
的错误Exception in thread "main" java.lang.NullPointerException
at net.ensode.glassfishbook.MessageSender.produceMessages(MessageSender.java:26)
at net.ensode.glassfishbook.MessageSender.main(MessageSender.java:58)
【问题讨论】:
-
嗯,这不是编译错误,而是运行时错误。代码编译但您有 NullpointerException - 很可能是因为您在容器外运行代码...
-
您的标题具有误导性,代码可以编译,但在使用
NPE运行时失败。你的代码中哪一行是 26? -
@A4L 我怎样才能使它可行。我刚刚开始将 java 和 JMS 一起编码。它的解决方案可能是什么。
-
@Robinhood 我从文章中了解到的是 glassfish 附带的一个工具,您可以使用它来运行您的独立应用程序,就好像它在 glassfish 应用程序容器中运行一样。您需要将您的应用程序/类导出到一个 jar 文件,然后使用该工具来运行您的应用程序。请参阅我在回答中从文章中引用的内容。