我在遠程glassfish服務器上配置了JMS隊列。我試圖從我的本地機器連接這個隊列。是否有可能直接連接到這臺服務器,或者我需要通過一些經紀人/代理連接?它是如何工作的? (我在新鮮JMS區) 非常感謝遠程JMS隊列的客戶端
6
A
回答
10
如果您的客戶端應用程序在Glassfish外部運行,這裏是一個開放mq客戶端的簡單代碼示例。
爲了得到它的工作,你將需要從glassfishInstall/MQ/lib目錄參考2個openmq罐子 - imq.jar和jms.jar
import com.sun.messaging.ConnectionConfiguration;
import com.sun.messaging.ConnectionFactory;
import com.sun.messaging.Queue;
import javax.jms.Connection;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageProducer;
import javax.jms.Session;
public class TestJmsClientStandalone2 {
public static void main(String[] args) throws JMSException
{
ConnectionFactory connFactory = new ConnectionFactory();
connFactory.setProperty(ConnectionConfiguration.imqAddressList, "remotehostip:7676");
Queue myQueue = new Queue("myRemoteQueue");
try (Connection connection = connFactory.createConnection();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
MessageProducer producer = session.createProducer(myQueue)) {
Message message = session.createTextMessage("this is my test message");
producer.send(message);
}
}
}
3
我有Glassfish的沒有經驗,但這種情況並與JBoss(它集成的JBossMQ)工作,它應該是普遍適用的,以及:
服務器:
- 服務器配置:創建隊列,並將其綁定到一個名字中可見,JNDI
- 服務器配置:確保連接工廠是可見的JNDI以及
客戶:
- 查找兩個連接工廠和使用JNDI的隊列。這可能需要將一些值放入屬性中,以便連接工廠和隊列之上可以構建其他對象(隊列連接/會話/接收器)。
至於JBoss的它看起來像這樣:
final Properties initialContextProperties = new Properties();
initialContextProperties.put("java.naming.factory.initial",
"org.jnp.interfaces.NamingContextFactory");
initialContextProperties.put("java.naming.provider.url",
"jnp://localhost:1099");
//
final InitialContext ic = new InitialContext(initialContextProperties);
final QueueConnectionFactory qcf = (QueueConnectionFactory) ic
.lookup("XAConnectionFactory");
final Queue queue = (Queue) ic.lookup("queue/A");
所以經紀人/代理人要經過的JNDI。
5
您的客戶端應用程序是否在本地glassfish實例中運行並嘗試連接到遠程glassfish實例的JMS資源?
如果是,那麼我找到了2種方法來做到這一點。對於這兩個選項,在遠程和本地glassfish實例中設置相同的連接工廠和目標(隊列)JMS資源。
1)設置JMS連接工廠屬性 「AddressList中」
在客戶GlassFish管理控制檯去Resources->JMS Resources->Connection Factories->jms/YourConnectionFactory->Additional Properties
添加一個附加屬性的名稱AddressList中和價值XX.XX .XX.XX:YYYY 其中值是遠程計算機的IP地址和運行JMS服務的端口號。
或
2)將客戶端的GlassFish Java消息服務連接到遠程的GlassFish
在客戶GlassFish管理控制檯去Configurations->server-config->Java Message Service
- 設置JMS服務類型: REMOTE(點擊保存)
- 設置JMS
Hosts->default_JMS_host
IP地址和端口爲遠程的IP地址和端口glassfish JMS服務
我測試了Glassfish 4的兩個選項。希望它有幫助。
相關問題
- 1. 從遠程客戶端使用Glassfish JMS
- 2. JMS連接到遠程客戶端
- 3. JBoss JMS遠程隊列?
- 4. JMS/HornetQ =如何從客戶端以編程方式創建JMS隊列?
- 5. IBM Webshpere MQ客戶端使用SSL連接遠程隊列
- 6. 將遠程JMS客戶端連接到GlassFish 3
- 7. 客戶端無法讀取遠程MSMQ隊列,但可以發送到遠程隊列
- 8. 遠程客戶端NotBoundException
- 9. 獲取遠程客戶端
- 10. Java遠程客戶端GUI
- 11. ClearCase遠程客戶端CLI?
- 12. 多線程JMS客戶端ActiveMQ
- 13. 與多線程客戶端消費JMS
- 14. JMS非MDB客戶端
- 15. 通用JMS客戶端
- 16. JMS客戶端路由
- 17. JMS客戶端問題
- 18. 從遠程服務器獲取遠程客戶端列表
- 19. 每個客戶端的隊列請求
- 20. qpid/amqp jms客戶端的客戶端故障切換?
- 21. JMS隊列客戶端onMessage()沒有收到來自發件人的消息
- 22. 客戶端插座保持隊列/池
- 23. 客戶端隊列持久性
- 24. EJB遠程應用程序 - 客戶端
- 25. 無法連接到從一個JMS客戶端6.0隊列JDK下6
- 26. 客戶端客戶端未收到JMS回覆
- 27. 遠程客戶端上的EJB
- 28. IntelliJ IDEA的EJB庫遠程客戶端
- 29. 遠程客戶端的Silverlight WSOD
- 30. 遠程機器未運行時如何初始化遠程JMS隊列的ConnectionFactory?