Это особая проблема:
Наш администратор Websphere допустил ошибку скрипта при создании источника данных, в результате чего наш источник данных был создан без атрибута xa=”true” в файле resources.xml. Источник данных создается не с помощью пользовательского интерфейса WAS, а с помощью сценария jython.
Вот фрагмент xml из resources.xml
<resources.jdbc:JDBCProvider xmi:id="JDBCProvider_34335495940" name="Oracle JDBC Driver (XA)" description="Oracle JDBC Driver (XA)" providerType="Oracle JDBC Driver (XA)" isolatedClassLoader="false" implementationClassName="oracle.jdbc.xa.client.OracleXADataSource" >
<classpath>${ORACLE_JDBC_DRIVER_PATH}/ojdbc7.jar</classpath>
В идеале файл resources.xml должен был быть таким (с атрибутом xa в конце)
<resources.jdbc:JDBCProvider xmi:id="JDBCProvider_1518484995940" name="Oracle JDBC Driver (XA)" description="Oracle JDBC Driver (XA)" providerType="Oracle JDBC Driver (XA)" isolatedClassLoader="false" implementationClassName="oracle.jdbc.xa.client.OracleXADataSource" **xa="true"**>
<classpath>${ORACLE_JDBC_DRIVER_PATH}/ojdbc7.jar</classpath>
Приложение отлично работает в продакшене без каких-либо проблем.
Вопрос в том, что если мы не предоставим атрибут «xa» в провайдере JDBC, как он будет понимать соединение?
Класс реализации драйвера: oracle.jdbc.xa.client.OracleXADataSource Оба метода подключения: XA getXAConnection() getXAConnection(java.lang.String userName, java.lang.String passwd)
поэтому, когда WebSphere получает соединение во время выполнения, оно должно по умолчанию быть соединением XA?
Я также проверил и подтвердил администратору баз данных, что база данных включена для XA.
Требуется ли атрибут xa="true"? Если не указано, значение по умолчанию становится «ложным»?
Благодарим за вашу помощь!