We define the JTA API in a module (java.transaction.api) but we neglect to redefine those classes in the javax.sql package which reference that API, including XADataSource, which can cause LinkageError and strange CCEs under certain circumstances.
The isolated subgraph of classes from that package need to be added to either the java.transaction.api module or a new javax.sql.api module. Then measures must be taken to prevent the JDK's version of these classes from leaking out, a task complicated by the presence of the rowset API classes also sharing that package.
One solution is to ensure that the javax.api module includes a re-exported dependency on the module with the relocated classes which takes precedence over the system dependency, ensuring that the system classes never become visible. Another solution is to modify JBoss Modules to implement an XML mapping of the class filter concept, and then add class filter expressions to the module.xml of the javax.api module.