Connecting Through a Firewall

When a client application is separated from the broker by a firewall,
special measures are needed in order to establish a connection. One approach
is to use the httpjms or httpsjms connection
service, which can “tunnel” through the firewall; see Appendix C, HTTP/HTTPS Support for details. HTTP connections are slower than other connection services, however;
a faster alternative is to bypass the Message Queue Port Mapper and explicitly
assign a static port address to the desired connection service, and then open
that specific port in the firewall. This approach can be used to connect through
a firewall using the jms or ssljms connection
service (or, in unusual cases, admin or ssladmin).

Table 9–8 Broker Configuration Properties for
Static Port Addresses

Connection Service

Configuration Property

jms

imq.jms.tcp.port

ssljms

imq.ssljms.tls.port

admin

imq.admin.tcp.port

ssladmin

imq.ssladmin.tls.port

To Enable Broker Connections Through a Firewall

Assign a static port address to the connection service you wish
to use.

To bypass the Port Mapper and assign a static port number
directly to a connection service, set the broker configuration property imq.serviceName.protocolType.port, where serviceName is the name of the connection service and protocolType is its protocol type (see Table 9–8). As with all broker configuration properties, you can specify this
property either in the broker's instance configuration file or from the command
line when starting the broker. For example, to assign port number 10234 to
the jms connection service, either include the line

imq.jms.tcp.port=10234

in the configuration file or start the broker with the command

imqbrokerd -namebrokerName-Dimq.jms.tcp.port=10234

where brokerName is the name of the broker
to be started.

Configure the firewall to allow connections to the port number
you assigned to the connection service.

You must also allow connections
through the firewall to Message Queue's Port Mapper port (normally 7676,
unless you have reassigned it to some other port). In the example above, for
instance, you would need to open the firewall for ports 10234 and 7676.