What is XA data source and NonXA data source?
What does mean by XA?
In theory a JDBC connection obtained from an XA datasource can participate in a distributed transaction. You want this feature if your application data is stored in multiple databases. Getting a connection from the XA Datasource guarantees that the connection will be registered with a transaction manager. When the transaction commits ALL resources will be committed or rolled back atomically.
If issuing JDBC calls from an EJB use the XA Datasource. If using JDBC from within a servlet then the non-XA datasource can be used.