Update: I tried to do this by extending the Standard Stateless SessionBean container-configuration, and setting the MinimumSize attribute to 1 (in jboss.xml). When I RTFM'd, I found the following disclaimer:
MinimumSize: The MinimumSize element gives the minimum number of instances to keep in the pool, although JBoss does not currently seed an InstancePool to the MinimumSize value.
Would the best way to do this be to create my own InstancePool implementation that does actually seed the pool? Or am I missing something?
What is that your session bean is doing that takes up so much time?
It seems to me you need more like an adapter to some external resource or something. If you want to have full control over the lifecycle of this "external" thing, you'll have to write a JCA adapter (which is quite difficult) or create an MBean service that manages a pool of whatever you want to manage, then the SLSB accesses the MBean (a lot easier but not so portable).
A third solution (a hack really) is to write an MBean that is deployed after the SLSB and spawns a number of concurrent threads calling the SLSB just to cause the bean pool to be populated. (I didn't say this).
A fourth solutions is to write your own pool implementation.
It is usually assumed that SLSB creation time is small, so that the server has the freedom to alter the pool size (enlarge/shrink) to match the client load...
To make a long story short, this external thing is a perl app that takes a while to initialize, then "listens" for requests. The MBean service idea sounds most promising, I'll give that a try.