A Datasource hands out JDBC connections and in WebLogic it is backed by a Connection Pool. This the preferred method of retrieving JDBC connections in
J2EE since it makes code easier to move between Application Servers (ie. all app servers support datasources).
A TXDatasource can be involved in a distributed transaction, a regular Datasource cannot. If you are using container managed transactions or JTA then you must use a TXDatasource.