(без использования двух разных экземпляров сервера или изменения
приложение перед развертыванием или упаковкой различных файлов * ds.xml в
каждое приложение?)
Два разных источника данных в одном файле * -ds.xml:
<local-tx-datasource>
<jndi-name>DS1</jndi-name>
<connection-url>jdbc:mysql://db.server/db?</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>username</user-name>
<password>pass</password>
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>
<metadata>
<type-mapping>mySQL</type-mapping>
</metadata>
</local-tx-datasource>
<local-tx-datasource>
<jndi-name>DS2</jndi-name>
<connection-url>jdbc:mysql://com.db/db2?</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>username</user-name>
<password>pass</password>
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>
<metadata>
<type-mapping>mySQL</type-mapping>
</metadata>
</local-tx-datasource>
Единственным недостатком является то, что вы должны настроить свой код, если вы используете аннотацию @Resource:
@Resource(mappedName="DS2")
private DataSource ds;
Не пробовали следующее, но вы могли бы сделать явный поиск JNDI через InitialContext и указать ресурс, который нужно искать в файле свойств (DS1 / DS2)? Если вы используете Maven (сейчас я делаю несколько предположений :)), вы можете отфильтровать файл свойств и предоставить правильное имя источника данных БД через профили во время сборки.