Когда вы используете переключатель -b
в командной строке при запуске сервера, это означает, что все привязки сокетов в вашем socket-binding-group
будут привязаны к этому IP-адресу по умолчанию.
Ваш JMS-клиент ищет jms/RemoteConnectionFactory
. Вот конфигурация для этого connection-factory
:
<connection-factory name="RemoteConnectionFactory" entries="java:jboss/exported/jms/RemoteConnectionFactory" connectors="http-connector"/>
Этот connection-factory
использует http-connector
. Вот конфигурация для http-connector
:
<http-connector name="http-connector" socket-binding="http" endpoint="http-acceptor"/>
Это использует http
socket-binding
, который использует внутренний IP-адрес, так как вы используете переключатель -b
в командной строке при запуске сервера. Поэтому, когда ваш удаленный JMS-клиент ищет jms/RemoteConnectionFactory
, он получает фабрику соединений, указывающую на внутренний IP-адрес, который потерпит неудачу.
Для решения этой проблемы необходимо настроить RemoteConnectionFactory
использовать внешний IP-адрес.
Сначала определите новый interface
, например:
<interface name="external">
<inet-address value="${jboss.bind.address.external:<<EXTERNAL-IP>>}"/>
</interface>
Здесь вы можете настроить фактический внешний IP-адрес или передать его в командной строке с помощью -Djboss.bind.address.external=<<EXTERNAL-IP>>
.
Во-вторых, определите новый socket-binding
для использования этого интерфейса:
<socket-binding name="external" interface="external" port="${jboss.http.port:8080}"/>
В-третьих, определите новый http-connector
для использования этого socket-binding
:
<http-connector name="http-connector-external" socket-binding="external" endpoint="http-acceptor"/>
В-четвертых, измените RemoteConnectionFactory
, чтобы использовать это http-connector
:
<connection-factory name="RemoteConnectionFactory" entries="java:jboss/exported/jms/RemoteConnectionFactory" connectors="http-connector-external"/>