В WebSphere созданный в файле resources.xml JDBCProvider по умолчанию имеет значение xa = "true"? - PullRequest
0 голосов
/ 26 сентября 2018

Это специфическая проблема:

Наш администратор 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>

Приложение прекрасно работает в Production без каких-либо проблем.

Вопрос в том, что если мы не предоставим атрибут 'xa' в провайдере JDBC, что он будет понимать как соединение?

Класс реализации драйвера: oracle.jdbc.xa.client.OracleXADataSource Оба метода подключения: XA getXAConnection () getXAConnection (java.lang.String userName, java.lang.String passwd)

, поэтому, когда WebSphere получает соединение во время выполнения, он по умолчанию должен быть XAсоединение?

Я также проверил и подтвердил с администратором базы данных, что база данных включена для XA.

Требуется ли атрибут xa = «true»?Если не указано иное, значением по умолчанию становится «false»?

Благодарим Вас за помощь !!

1 Ответ

0 голосов
/ 26 сентября 2018

Насколько я понимаю, xa = true / false заключается в том, что он помогает уточнить, какой тип интерфейса источника данных требуется (javax.sql.XADataSource, который поддерживает xa, по сравнению с javax.sql.ConnectionPoolDataSource, который не поддерживает xa) в тех случаях, когдаПоставщик JDBC предоставляет класс источника данных, который одновременно реализует оба интерфейса.В тех случаях, когда поставщик JDBC реализует только один из интерфейсов, который, как мы предполагаем, имеет место для oracle.jdbc.xa.client.OracleXADataSource, который вы используете, сервер приложений может выяснить, что вам действительно нужен javax.sql.XADataSource, потому что это единственный интерфейс, реализованный этим классом.Учитывая, что javax.sql.XADataSource создает только java.sql.XAConnection, в вашем случае вы всегда будете использовать XAConnection, способный к двухфазной фиксации.

Относительно того, требуется ли атрибут xa,Я бы ответил, что вы всегда должны включать его как для ясности, так и для согласованности с пользовательским интерфейсом WAS, а также для защиты от несколько маловероятной возможности того, что поставщик JDBC в будущей версии своего драйвера мог бы обновить свою реализацию источника данных для реализацииоба интерфейса, в этом случае для различения потребуется атрибут xa = true.

...