Удаленный JMS glassfish 3.x

#java #glassfish #jms #jndi

#java #glassfish #jms #jndi

Вопрос:

Я создал автономный удаленный клиент для встроенной JMS, который стоит на сервере glassfish3.

Клиентский код :

 
    jndiContext = new InitialContext();
    queueConnectionFactory = (TopicConnectionFactory) jndiContext.lookup("topekFactory");
    queue = (Topic) jndiContext.lookup("topek");
  

Клиент работает нормально, только если он на том же компьютере. Каждый раз, когда я пытаюсь запустить его на удаленной машине, он зависает на второй строке.

Я использую -Dorg.omg.CORBA.ORBInitialHost=10.10.10.2 указывает на сервер glassfish. Также пытался создать InitialContext со свойствами :

 
    props.setProperty("java.naming.factory.initial", "com.sun.enterprise.naming.SerialInitContextFactory");
    props.setProperty("java.naming.factory.url.pkgs", "com.sun.enterprise.naming");
    props.setProperty("java.naming.factory.state", "com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl");
    props.setProperty("org.omg.CORBA.ORBInitialHost", "10.10.10.2");
    props.setProperty("org.omg.CORBA.ORBInitialPort", "3700");
  

Но никаких положительных результатов.

Есть идеи, что я делаю не так? как подключить удаленный клиент со встроенной jms glassfish? Заранее спасибо

Комментарии:

1. Привязан ли сервер к адресу 10.10.10.2 или 0.0.0.0? На какой операционной системе запущен сервер?

2. Пробовал на Windows и SLES11 (значение listenieng равно 0.0.0.0). Он воспроизводим в 100% раз на разных машинах / ОС. Существует ли какая-либо конфигурация, которая ограничивает удаленные подключения?

3. Можете ли вы получить доступ к порту 8080?

4. Без каких-либо проблем на второй машине запущен другой узел кластера, все брандмауэры на двух машинах отключены. Забавно, что я могу использовать telnet через порт 3700, так что проблема глубже

5. Вы впервые упоминаете cluster в своем сообщении … вот почему я дал вам ответ, который я сделал. Я попытаюсь посмотреть, смогу ли я придумать что-нибудь с кластеризацией.

Ответ №1:

Можете ли вы получить доступ к порту 8080 удаленно?

Попробуйте получить доступ к образцу веб-приложения с удаленного компьютера. например http://10.10.10.2/sample /. Если вы не можете получить к нему удаленный доступ, и вы можете получить к нему доступ локально, это означает, что glassfish, возможно, привязан к адресу localhost.

Проверьте свой domain.xml и посмотрите, к каким IP-адресам привязываются различные сетевые прослушиватели. Если это 0.0.0.0, это означает, что брандмауэр, вероятно, блокирует входящие соединения. Если они равны 127.0.0.1, то вам нужно изменить их на сетевой IP или любой другой IP (0.0.0.0).

Если с вашей конфигурацией все в порядке, но вы по-прежнему не можете получить к ней доступ после перезагрузки, полностью отключите любой брандмауэр, чтобы убедиться, что в этом случае все работает нормально.

Это проверьте

чтобы увидеть, какие порты требуются по умолчанию, если это брандмауэр, и добавить необходимые правила в свой брандмауэр, чтобы разрешить надлежащий доступ

Теперь, когда вы упомянули кластер. Это может помочь:

проверьте это

Комментарии:

1. Брандмауэры отключены, и в конфигурации домена нет 127.0.0.1