We are developing an esb application that has a lot of services, in order to cope with high user peeks we have configured the jms listeners to have maxThreads="100".
I looked through the MessageAwareListener and noticed that the executor is initialized using a fixed thread pool:
_execService = Executors.newFixedThreadPool(_maxThreads) ;
If you are wanting to use as many services as this then I would suggest using the jms-jca-provider instead of the jms-provider. The threads would then be configured as part of a global pool, common to all services.