远程Glassfish JMS查找

时间:2016-12-22 10:19:10

标签: glassfish jms

我想连接到我的Glassfish服务器XX.XX.XX.XX:XXXX,它运行在我们服务器上的ubuntu机器上。

我想发送消息然后接收消息。

我的接收器看起来像这样:

    public JMS_Topic_Receiver(){
    init();
}

public List<TextMessage> getCurrentMessages() { return _currentMessages; }

private void init(){

    env.put("java.naming.factory.initial", "com.sun.enterprise.naming.SerialInitContextFactory");
    env.put("org.omg.CORBA.ORBInitialHost", "10.10.32.14"); 
    env.put("org.omg.CORBA.ORBInitialPort", "8080"); 

    try {
        ctx = new InitialContext(env); // NamingException
    } catch (NamingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}

public void subscribeTopic(String topicName, String userCredentials) {
    try {
        TopicConnectionFactory topicConnectionFactory = (TopicConnectionFactory) ctx.lookup("myTopicConnectionFactory");
        TopicConnection topicConnection = topicConnectionFactory.createTopicConnection(); 
        try {
            String temp = InetAddress.getLocalHost().getHostName();
            topicConnection.setClientID(temp);
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }

        TopicSession topicSession = topicConnection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
        Topic topic = (Topic) ctx.lookup(topicName); 

        topicConnection.start();

        TopicSubscriber topicSubscriber = topicSession.createDurableSubscriber(topic, userCredentials); 
        topicSubscriber.setMessageListener(new MyMessageListener());


    }
    catch(NamingException | JMSException ex)
    {
        ex.printStackTrace();
    }
}

我的发件人看起来像这样:

public JMS_Topic_Sender(){
    init();
}

private void init(){

    env.put("java.naming.factory.initial","com.sun.enterprise.naming.SerialInitContextFactory");
    env.put("org.omg.CORBA.ORBHost","10.10.32.14"); 
    env.put("org.omg.CORBA.ORBPort","8080");    

    try {
        ctx = new InitialContext(env);
    } catch (NamingException e) {
        e.printStackTrace();
    }
}

public void sendMessage(String message, String topicName)  {
    try {   
        TopicConnectionFactory topicConnectionFactory = (TopicConnectionFactory) ctx.lookup("myTopicConnectionFactory");

        if (topicConnectionFactory != null) {
            TopicConnection topicConnection = topicConnectionFactory.createTopicConnection();

            TopicSession topicSession = topicConnection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE); 
            Topic topic = (Topic) ctx.lookup(topicName); 
            topicConnection.start(); 
            TopicPublisher topicPublisher = topicSession.createPublisher(topic);
            TextMessage tm = topicSession.createTextMessage(message);
            topicPublisher.send(tm);

            topicSession.close();
            topicConnection.stop();
            topicConnection.close();    
        }
    } catch (NamingException e) { 
        e.printStackTrace(); 
    } catch (JMSException e) {
        e.printStackTrace();
    }

}

我从在线各种教程中获得了大部分代码。 现在,当我想要进行查找时。 - &GT; ctx.lookup(&#34; myTopicConnectionFactory&#34);

我得到了各种各样的错误:

信息:HHH000397:使用ASTQueryTranslatorFactory org.omg.CORBA.COMM_FAILURE:FEIN:00410008:连接中止vmcid:OMG次要代码:8完成:可能

javax.naming.NamingException:对于myTopicConnectionFactory&#39;查找失败在SerialContext中........

我的问题是,如何正确查找? 我的猜测是我的Propertys(env)不正确,我需要更改thouse,但我不知道是什么?

此外,如果我在我自己的Computers localhost上运行我的Glassfish,它也可以工作。 当我使用localhost作为地址和8080作为端口时。

0 个答案:

没有答案