It's using pooling by default. This error is thrown from the already created connection. This checking is done in most of the methods defined in java.sql.Connection interface.
Any chance you have a small reproducer for this problem?
I'va added a simple example in my bitbucket repo.
It's working with a Postgres database. I have a postgres XADataSource and a Tomcat JDCB DataSource manages the Narayana JDBC connections.
The main method launches the execute method in a thread pool
Sometimes, the execute method fails with the SQLException (ARJUNA017003). The number of exception depends upon the size of the threadpool.
The code expects the driver to be able to do the pooling actually. We could look to making the code support a pooled wrapper. There is IronJacamar though which we could also use for this: quickstart/jca-and-hibernate at master · jbosstm/quickstart · GitHub quickstart/jca-and-tomcat at master · jbosstm/quickstart · GitHub