簡體   English   中英

從遠程Glassfish接收JMS消息

[英]JMS-Receiving messages from remote Glassfish

我正在開發一個使用JMS作為消息傳遞層的應用程序。 我還使用glassfish來托管jms / mq后端。 該應用程序能夠使用我最初設置的glassfish 3.1服務器中的連接工廠和主題來執行發布/訂閱消息傳遞。 現在,我有另一個glassfish(4.1)實例,該實例承載一組新的應用程序套件使用的新功能,但是我仍然需要使用第一個glassfish服務器廣播的消息。 客戶端使用特定於glassfish 4.1的新庫這一事實,我無法直接連接到glassfish1服務器。

我遵循了有關多服務器環境的本教程( https://docs.oracle.com/cd/E19798-01/821-1841/bncfp/index.html ),並且獨立的Java客戶端都使用連接工廠設置在新的glassfish服務器中連接到舊的glassfish服務器。 我知道正在建立連接,因為如果我停止glassfish1,則會出現連接丟失錯誤等。

相關的客戶端代碼如下:

        System.setProperty("org.omg.CORBA.ORBInitialHost", "10.20.10.52");
        System.setProperty("org.omg.CORBA.ORBInitialPort", "3700");
        try {
            try {
                ctx = new InitialContext();
        } catch (NamingException ex) {
            ex.printStackTrace();
        }
        ConnectionFactory cf = (ConnectionFactory) ctx.lookup("jms/ConnectionFactory");
        Connection connection = cf.createConnection();
        jmsContext = cf.createContext(Session.AUTO_ACKNOWLEDGE);
        topic = (Topic) ctx.lookup("jms/Topic");
        updateShipperConsumer = jmsContext.createConsumer(topic);
        jmsProducer = jmsContext.createProducer();

        logger.info("Started JMS successfully!");
    } catch (NamingException ex) {
        ex.printStackTrace();
    } catch (JMSException ex) {
        Logger.getLogger(LamtecJMSSystemImpl.class.getName()).log(Level.SEVERE, null, ex);
    }
 }

jms / ConnectionFactory jndi是glassfish2上的本地連接工廠,其AddressList屬性設置為glassfish1:7676。 如本教程所建議,在glassfish1上有一個具有相同名稱的對應連接工廠。 查看glassfish1服務器上的imq日志文件,我發現從glassfish2建立了連接。
我不確定是否應該在主題jndi(在本地以及在遠程服務器上)上進行查找,但是我認為這沒有什么不同。

根據我上面引用的教程,我已經完成了所有需要的配置和代碼方面的工作,但是我的客戶端仍然沒有收到任何jms消息。 有任何想法嗎?

我可以為JMS隊列提供建議,可能是針對主題相似或相同的解決方案。 您可以在兩台服務器上創建具有相同名稱的隊列,並使用glassfish配置讓第一個隊列將其消息推送到第二個隊列,因此讓imq代理完成這項工作。 在第二台代理的設置中,使用值為“ mq:// host2:port2”的屬性“ AddressList”配置第一台服務器上的jms連接工廠。

請參閱OSCM服務目錄https://github.com/servicecatalog/development/blob/master/oscm-installation/domains/bes_domain/installer/resources-template.xml中有關這種配置的glassfish資源模板。

該示例是連接工廠“ jms / bss / masterIndexerQueueFactory”,您可以在此模板中找到它。

有關開源項目OSCM雲服務管理軟件的更多信息

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM