There are lots of issues reported by customers on connecting to SIBus and interacting with it. Most often these will be configuration issues which could have been easily prevented if the customers had a better understanding on how does the JMS Connection works.
If you are looking for a place to understand how JMS Connection works in WebSphere Application Server, then you are at the right place. Here, I am not going to describe you about the various fields in Connection Factory settings, since you can get the details about them in the WebSphere Application Server Infocenter, in fact here I am going to tell you about what exactly happens behind the scene and how does the connection happens.
While configuring the Connection Factory, there is a field called, Provider endpoints, although it is not a mandatory field, it is the one which is responsible for gaining entry into the Bus. This field accepts a comma separated values of three parameters which are separated by colon, in this form <hostname>:<port>:<bootstrapmessagingtype>. Each of these parameters have default values which equates to localhost:7276:BootstrapBasicMessaging. If you do not give any values in that field, it will take the default values, which may not make any sense if your application is connecting from an external machine or a J2SE environment.
After the application looks up for the resource and tries to create a connection, the first thing that happens is, it looks into the provider end points address. It tries to connect to the first set of values which are specified and goes on to the next if it does not succeed until the list gets exhausted. This process is called as the bootstrap process. In bootstrap process the application tries to connect to the bootstrap server with the details which are specified in the provider end point. The bootstrap server can be any server which has the SIB Service enabled, it is not necessary for the bootstrap server to have a Message Engine running. This connection enables you the entry into the Bus, since Bus is just a logical entity, it is not finished at this step. Now it is the responsibility of the bootstrap server to identify a Server which has the message engine running to create a connection. The bootstrap server will look for a Messaging Engine which meets all the required criterias specified in the connection factory resource. Once it finds a server which meets these conditions, it creates a connection and returns back to the client.
Common misconception about the Provider endpoints property:
Most users are in impression that the provider endpoints are basically nothing but the properties of the Messaging Engine which they are targeting. Connection factory has a sophisticated mechanism to target a Messaging Engine, in the means of Target name, Target scope etc… which determines which of the Messaging Engine to connect to. In the end I would like to clarify that the provider endpoint just gives you an entry point to connect to a messaging engine. Ideal way to configure the provider endpoint is to have two comma separated values of bootstrap servers, one being the primary and the other being the backup just in case the primary becomes inaccessible.
"The postings on this site are my own and don't necessarily represent IBM's positions, strategies or opinions."