an ejb container is a transaction processor.
You need to use xa capable resource managers/drivers (db + driver) if your transaction includes more than one resource manager ( for instance db + transacted jms or two separate dbs.) You also need to use xa if your transaction spans more than one server. You do not need xa if you are only using one db instance, and only one server, even if you include many ejbs in one transaction.
The default jboss transaction manager is not entirely appropriate for serious xa use since it does not handle transaction logging, thus cannot recover from tx manager failure. Use the Tyrex plugin instead.
BTW the only free/open source xa capable db/driver I am aware of is firebird + the firebird jca-jdbc driver.