By doing that you basically ignore the restart problem. 

Have a look at:
 https://github.com/bitronix/btm/blob/master/btm/src/main/java/bitronix/tm/TransactionManagerServices.java#L112
and
 https://github.com/bitronix/btm/blob/master/btm/src/main/java/bitronix/tm/BitronixTransactionManager.java#L348

to get an example of how BTM initializes and cleans up its components. Not a design to be very proud of, but at least that's been kept consistent.

BTW, all those service interfaces extend bitronix.tm.utils.Service which you should also consider doing.