Rickard, clearly the database pools depend on the transaction
manager. However, in the particular set of hashtables in use for my demo,
the pools are started before the transaction manager, so they still blow
up due to no transaction manager in JNDI. I could axe that check, but
that would just push the error from start time to runtime if the TM really
*isn't* initialized.
There are two ways to approach this. One is to make certain
services start at the beginning - so there's a two-phase startup to
accomodate simple dependencies. The better way is to allow each service
to list its dependencies and make sure they're loaded in a suitable order.
In any case, if we're relying on pure JMX, we may be screwed here
(since I think you said the current JMX implementation does not allow
that). I'm tempted to make the Transaction service do its thing in the
constructor instead of the startService. It's a kludge, but I have to
either do that or remove the JNDI check to get the pools to run in the
very short term. Your choice, but in this case I'd vote for better error
checking over better conceptual purity.
Aaron