Я настроил XADatasource на сервере wildlfy, так как мне нужно использовать транзакции JTA и мне нужно управлять несколькими базами данных с помощью JTATransactionManager с использованием реализации Atomikos.Я получаю следующее ClassCastException при поиске и сборке AtomikosDatasource с использованием весенней загрузки.Кажется, что поиск JNDI всегда возвращает WildflyDatasource, и он не реализует XADatasource.Пожалуйста, предложите мне, как получить XADatasource вместо WildflyDatasource при поиске или преобразовании из WildlfyDatasource в XADatasource.
Причина: java.lang.ClassCastException: org.jboss.as.connector.subsystems.datasources..WildFlyDataSource не может быть приведен к javax.sql.XADataSource
Ниже приведен фрагмент для поиска источника данных и создания AtomikosDataSourceBean
*@Bean(name = "customerDataSource", initMethod = "init", destroyMethod = "close")
@Primary
public DataSource customerDataSource() throws NamingException {
JndiDataSourceLookup dataSourceLookup = new JndiDataSourceLookup();
XADataSource mysqlXaDataSource = (XADataSource) dataSourceLookup.getDataSource("java:/jdbc/atomikos_one");
AtomikosDataSourceBean xaDataSource = new AtomikosDataSourceBean();
xaDataSource.setXaDataSource(mysqlXaDataSource);
xaDataSource.setUniqueResourceName("xads1");
return xaDataSource;
}*
Ниже приведена конфигурация источника данных в Wildfly 10.1.0.Final
<xa-datasource jndi-name="java:/jdbc/atomikos_one" pool-name="atomikos_one" enabled="true" use-ccm="true">
<xa-datasource-property name="ServerName">
localhost
</xa-datasource-property>
<xa-datasource-property name="DatabaseName">
atomikos_one
</xa-datasource-property>
<driver>mysql</driver>
<xa-pool>
<min-pool-size>5</min-pool-size>
<max-pool-size>100</max-pool-size>
<use-strict-min>true</use-strict-min>
<wrap-xa-resource>false</wrap-xa-resource>
</xa-pool>
<security>
<user-name>root</user-name>
<password>password</password>
</security>
<validation>
<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker"/>
<background-validation>true</background-validation>
<exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter"/>
</validation>
</xa-datasource>
<driver name="mysql" module="com.mysql">
<driver-class>com.mysql.jdbc.Driver</driver-class>
<xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
</driver>