The factors that affect how applications connect to a service
integration bus so that they can use resources provided by that bus.
To connect to a service integration bus, an application actually
connects to a messaging engine on the bus.
In the simplest case, you can configure the environment to automatically
connect applications to any available messaging engine on the bus.
You can specify extra configuration details to control the connection
process; for example, to identify special bootstrap servers, or to
limit connection to a subgroup of available messaging engines.
Applications running in an application server
Applications
that are running inside an application server can locate a suitable
messaging engine themselves.
If the messaging engine is found
in the same server, a connection is created that provides the application
with the fastest available connection to a messaging engine. Otherwise,
if a messaging engine is found in another process - on the same or
a different host - a remote connection is made. If no suitable messaging
engine is found the application fails to connect to the bus.
Figure 1. Connection to a messaging engine - Applications
running in an application server
The figure shows two applications
running in application servers. Application X on server3 has connected
to the messaging engine running in the same server. Application Y
on server1 has connected to a messaging engine that is running in
the same bus but on a different server and host, because server1 does
not have a suitable messaging engine.
Applications running outside an application server
Client
applications running outside an application server (for example, running
in a client container or outside the WebSphere Application Server
environment) cannot locate a suitable messaging engine themselves
and must complete a bootstrap process through a bootstrap server.
A bootstrap server is an application server that is running the SIBService
service, but is not necessarily running any messaging engines. The
bootstrap server selects a messaging engine that is running in an
application server that supports the desired target transport
chain.
Figure 2. Connection to a messaging engine - Applications
running outside an application server
This figure shows a client application running outside
an application server. To connect to a messaging engine, the application
connects first to a bootstrap server. The bootstrap server selects
a messaging engine then tells the client application to connect to
that messaging engine.
A bootstrap server uses a specific port
and bootstrap transport chain, which with the host name form the endpoint
address of the bootstrap server.
The properties of a
JMS connection factory used by a client application control the selection
of a suitable messaging engine and how the client connects to the
selected messaging engine. By default, a connection factory expects
to use a bootstrap server that has an endpoint address of
localhost:7276:BootstrapBasicMessaging.
That is: the client application expects to use a bootstrap server
on the same host as the client, using port 7276, and using the predefined
bootstrap transport chain called BootstrapBasicMessaging.
Note: 
For the i5/OS platform, you must (at least) change
the default endpoint address from
localhost:7276:BootstrapBasicMessaging to
your.server.name:7276:BootstrapBasicMessaging.
When
you create an application server, it is automatically assigned a unique
non-secure bootstrap port, SIB_ENDPOINT_ADDRESS, and a secure bootstrap
port, SIB_ENDPOINT_SECURE_ADDRESS. If you want to use an application
server as a bootstrap server, and the server has been assigned a non-secure
port other than 7276, or you want to use the secure port, then you
must specify the endpoint address of the server on the Provider endpoints
property of the connection factory.
The endpoint addresses for
bootstrap servers must be specified in every connection factory that
is used by applications outside of an application server. To avoid
having to specify a long list of bootstrap servers, you can provide
a few highly-available servers as dedicated bootstrap servers. Then
you only need to specify a short list of bootstrap servers on each
connection factory.
The messaging engine selection process
The
selection process is used to choose a messaging engine that an application
should connect to so that it can use the resources of a service integration
bus.
The information that controls the selection
process is configured in one of the following places:- For JMS client applications, this information is configured on
the connection factory.
- For message-driven bean (MDB) applications, this information is
configured on the activation specification.
- For other types of application, this information is configured
programmatically by the application.
Although a connection can be made to any available
messaging engine, the connection process applies a few simple rules
to find the most suitable messaging engine. For an application running
in an application server, the process is as follows:
- The process looks for a messaging engine in the required bus within
the same application server. If a messaging engine in the required
bus is found in the same application server then a connection is made
from the application to the messaging engine. If a suitable messaging
engine is not found, the next rule is checked.
- The process looks for a messaging engine that is running on the
same host as the application. If a messaging engine is found running
on that host, then the application makes a remote connection to the
selected messaging engine. If a suitable messaging engine is not found,
the next rule is checked.
- The process looks for a messaging engine anywhere in the bus.
If a suitable messaging engine is found the application makes a remote
connection to the selected messaging engine. If a suitable messaging
engine is not found, the connection attempt fails.
For an application running outside an application server, connection
requests are workload balanced across all the available messaging
engines in the bus.
In both cases (that is, an application running
in an application server and an application running outside an application
server) you can restrict the range of messaging engines available
for connection, to a subgroup of those available in the service integration
bus. You do this by configuring the following connection properties
of the connection factory or activation
specification:
- Target inbound transport chain
- The messaging engine inbound transport chain that must be supported
by the application server in which the messaging engine runs.
These
transport chains specify the communication protocols that can be used
to communicate with the application server that the client application
is connected to. The following predefined messaging engine inbound
transport chains are provided:
- InboundBasicMessaging
- JFAP over TCP/IP
- InboundSecureMessaging
- JFAP over SSL over TCP/IP
- Connection proximity
- For an application running in an application server, this property
defines the proximity of messaging engines relative to the application
server. For an application running outside an application server,
this property defines the proximity of messaging engines relative
to the bootstrap server.
- Bus
- Connections can be made to messaging engines in the same bus.
A
suitable messaging engine in the same server is selected ahead of
a suitable messaging engine in the same host, and in turn ahead of
a suitable messaging engine in another host.
- Cluster
- Connections can be made to messaging engines in the same server cluster. If
the application is not running in a clustered server, or the bootstrap
server is not in a cluster, then there are no suitable messaging engines.
A
suitable messaging engine in the same server is selected ahead of
a suitable messaging engine in the same host, and in turn ahead of
a suitable messaging engine in another host.
- Host
- Connections can be made to messaging engines in the same host. A
suitable messaging engine in the same server is selected ahead of
a suitable messaging engine in the same host.
- Server
- Connections can be made to messaging engines in the same application server.
- Target significance
- This property defines whether or not the connection proximity
search must be restricted to only the messaging engines in the target
group.
- Preferred
- It is preferred that a messaging engine be selected from the target group. A messaging engine in the target group is selected if one is available. If a messaging engine is not available in the target group, a messaging engine outside the target group is selected if available in the same service integration bus.
- Required
- It is required that a messaging engine be selected from the target group. A messaging engine in the target group is selected if one is available. If a messaging engine is not available in the target group, the connection process fails.
For
MDB applications connecting to a cluster bus member, you can also
enable either of the following additional configurations:
- All servers in the cluster can receive messages from the MDB application,
to make full use of the processing power in the cluster.
- Just one server at a time can receive messages from the MDB application,
to ensure sequential processing of the messages.
For more information, see
How a message-driven bean connects in a cluster.