Universal Messaging 10.5 | Concepts | Deployment | Client | Multiplexing Sessions
 
Multiplexing Sessions
Universal Messaging supports the multiplexing of sessions to a specific host in Java and C#. This allows the circumvention of connection limit issues by packing multiple Universal Messaging sessions into one connection, and can be used to allow the same client to set up multiple subscriptions to a given channel or queue if required.
Multiplexing Sessions
To multiplex two sessions, first construct one session, and then create a new session by multiplexing the original session. These two sessions will now appear to act as normal sessions, but will, in fact, share a single connection.
This can be accomplished either by using the nSession object associated with the original session, or by using the nSessionAttributes used to create this original session. Below are examples of how to multiplex sessions via both methods:

//Construct first session
nsa = new nSessionAttributes(realmDetails, 2);
mySession = nSessionFactory.create(nsa, this);
mySession.init();

//Construct second session by multiplexing the first session.
otherSession = nSessionFactory.createMultiplexed(mySession);
otherSession.init();

//Construct a third session by multiplexing the first session's nSessionAttributes.
thirdSession = nSessionFactory.createMultiplexed(nsa);
thirdSession.init();
Examples of multiplexing a session are available for Java and C# .NET.
Multiplex session authentication
If you create a multiplex session (i.e. a new session created by multiplexing the original session) without specifying a user name explicitly, the Universal Messaging client will use the user of the original session as the multiplex session user.
For SSL connections that are using client certificate authentication, the original session's subject uses the common name of the client certificate as the primary principal instead of any user name specified when authenticating the session. Therefore, the Universal Messaging server also uses the same client certificate principal for any multiplex sessions which do not explicitly specify a user name.