我用“Smack API”(XMPP)和“JAIN SIP”API(SIP)创建了一个 SIP-XMPP 网关。在我的应用程序中,我有三个线程:一个用于发送和接收 SIP,一个用于发送和接收 XMPP,一个“MessageQueue”用于存储传入消息并将它们重定向到相反的协议线程(传入 SIP -> 传出 XMPP,传入 XMPP - > 传出 SIP)
我目前正在我的 Windows 计算机上的 Eclipse 中运行网关,它完全可以工作。但是,如果我将 Eclipse 项目导出到 .jar 文件并在我的 Ubuntu 服务器上运行它,传入的消息将存储在消息队列中,但它们不会被重定向。
我在两个操作系统上运行具有相同 JDK 版本“1.6.0_14”的应用程序。我读过 Java 中的线程在 Windows 和 UNIX 系统中的运行略有不同。我做错了什么还是线程在它运行的操作系统上运行不同的挂起?
MessageQueue queue = new MessageQueue();
XMPPMessageListener xmppThread = new XMPPMessageListener();
SIPThread sipThread = new SIPThread();
new Thread(queue).start();
sipThread.setQueue(queue);
xmppThread.setQueue(queue);
queue.setXMPPThread(xmppThread);
queue.setSipThread(sipThread);
new Thread(xmppThread).start();
new Thread(sipThread).start();