Just a couple of wild guesses, to try after you put the connection.close() back in the same method you got it in.
1. Make sure your datasource is still loaded by XADataSourceLoader not JDBCDataSourceLoader. JDBCDataSourceLoader has nothing to do with the transaction manager.
2. Make sure you are closing all resultsets and statements in that order before you close the connection.
Thanks for your reply.
I added the close call back to the remote methods and tried again with version BETA 2.4. Looks like it is working fine now.