The indirections of the ASF are mind boggling ;-)
First there is the JMS Provider which defines JNDI:
Then there is the ServerSessionPoolLoader
* which is a loader for a factory (ServerSessionPoolFactory)
* for a pool which is in turn a factory for the sessions
* but delegates part of the work to the ConnectionFactoryHelper
* and yet still leaves the caller to do some of the task :-)
Finally we have JMSContainerInvoker itself which should really be just about
handing off lifecycle methods to these objects, but it actually ends up doing
a lot of work itself.
There's also issues of how you plugin the transaction manager, jms provider,
server session pool loader that are currently done through jndi making it
very difficult to just create one through IOC.
The JMSProvider itself only really works via jndi, since you have to getInitialContext()
when it should just be a factory for destinations and connection factories.