The Session is responsible for holding state for the browsers, producers and receivers, for which it is also a factory (along with messages).
It is constructed by the Factory interceptor from the connection.
It will normally be implemented with at least the following interceptors.
Close interceptor acts as a valve to stop requests on closed objects.
JMSException interceptor turns non JMSExceptions thrown by the generic backend into JMSExceptions.
Factory interceptor to construct the facades and messaging api containers or message objects.
Session interceptor for handling state.
Transaction interceptor bulks sends and acknowledgements into transaction requests.
Invoker interceptor sends remote requests over the network using the configured protocol.
Client interceptor used by the server to keep track of client subscriptions and unacknowledged messages.
Persistence interceptor used by the server to persist sent messages.
Security interceptor used by the server to authenticate/authorise the request.