我正在使用 glassfish 服务器测试 JMS,因此我想在 glassfish 服务器队列上发送简单的文本消息。我已经尝试过使用 ActiveMQ 并且一切正常,但我无法理解我可以在配置 jndi.properties 文件中放入什么以及 glassfish 服务器需要哪个 jar。请给我一些想法来实现这一点。
提前致谢
由于您使用的是 Glassfish,因此最简单的方法是编写简单的应用程序 (EJB) 来执行该任务。您必须在 GF 中定义:
jms/ConnectionFactory
jms/myQueue
下一步是在您需要编写的一些 EJB 中使用这些。这并不难:首先,你必须注入:
@Resource(mappedName="jms/ConnectionFactory")
private ConnectionFactory cf;
@Resource(mappedName="jms/myQueue")
private Queue messageQueue;
然后像这样使用它:
..
javax.jms.Connection conn = null;
javax.jms.Session s = null;
javax.jms.MessageProducer mp = null
try {
conn = cf.createConnection();
s = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
mp = s.createProducer(messageQueue);
javax.jms.TextMessage msg = s.createTextMessage();
msg.setStringProperty("your-key", "your-value");
msg.setText("Your text message");
mp.send(msg);
}
catch(JMSException ex) {
// exception handling
}
finally {
try {
// close Connection, Session and MessageProducer
} catch (JMSException ex) {
//exception handling
}
}
关于配置,您不需要任何外部 JAR,所需的一切都已交付。如果您不想编写 EJB,而是编写常规的 Java(独立)应用程序,那么您必须包含jms.jar
和imq.jar
.