Источник данных сервера приложений Websphere

Мы столкнулись со странной проблемой с источником данных сервера приложений Websphere.

Окружающая среда:

  • Сервер приложений Websphere (6.1)
  • линукс
  • Портал Liferay (5.2)
  • Оракул 9i
  • Гибернация 3.0

У нас есть источник данных, развернутый на сервере приложений со ссылкой на ODBC14.jar

Конфигурация гибернации для источника данных:

<property name="connection.datasource">jdbc/appDB</property>
<property name="jndi.class">com.ibm.websphere.naming.WsnInitialContextFactory</property>
<property name="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</property>
<property name="connection.autocommit">false</property>

Мы получаем следующее исключение:

Вызвано: java.sql.SQLException: DSRA8101E: класс DataSource нельзя использовать как однофазный: ClassCastException: oracle.jdbc.pool.OracleConnectionPoolDataSource несовместим с javax.sql.ConnectionPoolDataSource в com.ibm.ws.rsadapter.AdapterUtil.toSQLException( AdapterUtil.java:1375) по адресу com.ibm.ws.rsadapter.jdbc.WSJdbcDataSource.getConnection(WSJdbcDataSource.java:462) по адресу com.ibm.ws.rsadapter.jdbc.WSJdbcDataSource.getConnection(WSJdbcDataSource.java:418) по адресу org .hibernate.connection.DatasourceConnectionProvider.getConnection(DatasourceConnectionProvider.java:69) в org.hibernate.jdbc.ConnectionManager.openConnection

Мы попробовали следующий обходной путь. Мы узнали, что classes12.jar находится в WEB-INF/lib, в котором есть драйвер ORACLE, который может вызвать конфликт загрузки классов с Shared/apps/lib ODBC14.jar.

Поэтому удалил class12.jar из Lib веб-приложения, повторно развернул приложение и перезапустил, но снова получил ту же ошибку. Любая идея о том, как решить эту проблему?


person Rutvij Shah    schedule 05.11.2009    source источник


Ответы (3)


DSRA8101E: Класс DataSource нельзя использовать как однофазный: ClassCastException: {0} Explanation: Для свойства 'enable2Phase' можно задать значение false, только если класс DataSource реализует ConnectionPoolDataSource. Действия пользователя: Задайте для параметра enable2Phase значение true для XADataSource или значение false для ConnectionPoolDataSource.

Вы пытались установить для enable2Phase значение false?

person Binil Thomas    schedule 08.11.2009

У меня была такая же проблема в websphere 7, когда я пытался использовать class12.jar для подключения к старой базе данных оракула.

Мое решение заключается в создании нового определяемого пользователем поставщика jdbc для источника данных веб-приложения V4 (источник данных нового типа вызовет несовместимую проблему), который будет указывать на старый class12.jar.

И используйте опцию изоляции, чтобы изолировать новый источник данных оракула (если он у вас есть), чтобы предотвратить конфликт загрузчика классов (это очень важно!)

Старый источник данных websphere v4 не имеет этой опции.

person jacob    schedule 27.07.2010

В разделе «Поставщик JDBC» у меня сработала только установка флажка «Изолировать этого поставщика ресурсов».

person user3653909    schedule 29.04.2016