We are in the process of upgrading from JBoss 6 to JBoss 7. The nature of our application has a separate database instance per customer, as well as a core configuration data
OK, it turns out that unlike JBoss6, a NOT_SUPPORTED transaction is still a transaction as far as the validation logic for retrieving data sources is concerned.
The way to work around this is to make the whole EJB a bean managed transaction:
@TransactionManagement(TransactionManagementType.BEAN)
This unfortunately limits some flexibility in that some times you would rather control this method-by-method, but it isn't too painful a workaround.