【发布时间】:2012-01-07 01:37:47
【问题描述】:
我正在尝试创建一个将 JMS 消息发送到 Glassfish 服务器上的队列的 Java 应用程序客户端项目。
问题是应用程序发送消息后,它应该退出时挂起。消息传输成功,但由于某种原因应用程序没有退出。我已经尝试调试应用程序,我可以一直执行到static void main 的末尾,这就是它挂起的地方。
代码如下:
import javax.jms.*;
import javax.naming.InitialContext;
public class Main {
public void SendMessage() throws Exception {
InitialContext ctx = new InitialContext();
ConnectionFactory cf = (ConnectionFactory) ctx.lookup("jms/TestFactory");
Queue queue = (Queue)ctx.lookup("jms/TestQueue");
Connection conn = cf.createConnection();
Session s = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
MessageProducer prod = s.createProducer(queue);
TextMessage txt = s.createTextMessage("testing");
prod.send(txt);
prod.close();
s.close();
conn.close();
}
public static void main(String[] args) throws Exception {
Main m = new Main();
m.SendMessage();
}
public Main() {
super();
}
}
我怎样才能让它停止挂起?
【问题讨论】:
-
在应用程序挂起时进行线程转储将非常有用。
-
以下是我的应用程序挂起时正在运行的线程:pastebin.com/wQRsqbys