I am trying to develop a program that will send message to ActiveMQ Artemis embedded in JBoss EAP 7.2. I have followed the instructions given in this question:
Below is
When you use the -b switch on the command-line when starting the server that means all the socket-bindings in your socket-binding-group will be bound to that IP address by default.
Your JMS client is looking up jms/RemoteConnectionFactory. Here's the configuration for that connection-factory:
<connection-factory name="RemoteConnectionFactory" entries="java:jboss/exported/jms/RemoteConnectionFactory" connectors="http-connector"/>
This connection-factory is using the http-connector. Here's the config for the http-connector:
<http-connector name="http-connector" socket-binding="http" endpoint="http-acceptor"/>
This is using the http socket-binding which is using the internal IP address since you're using the -b switch on the command-line when starting the server. Therefore when your remote JMS client looks up jms/RemoteConnectionFactory it will get a connection factory pointing to the internal IP address which will fail.
To resolve this issue you need to configure RemoteConnectionFactory to use the external IP address.
First, define a new interface, e.g.:
<interface name="external">
<inet-address value="${jboss.bind.address.external:<<EXTERNAL-IP>>}"/>
</interface>
You can configure the actual external IP address here or you can pass it on the command-line using -Djboss.bind.address.external=<<EXTERNAL-IP>>.
Second, define a new socket-binding to use this interface:
<socket-binding name="external" interface="external" port="${jboss.http.port:8080}"/>
Third, define a new http-connector to use this socket-binding:
<http-connector name="http-connector-external" socket-binding="external" endpoint="http-acceptor"/>
Fourth, change RemoteConnectionFactory to use this http-connector:
<connection-factory name="RemoteConnectionFactory" entries="java:jboss/exported/jms/RemoteConnectionFactory" connectors="http-connector-external"/>