Thorntail / swarm: нельзя использовать XAdatasources? - PullRequest
0 голосов
/ 01 октября 2018

Я использую Thorntail 2.2.0 (BOM), вставил источник данных фракции и установил проект-defaut.yml:

swarm:
  datasources:
    xa-data-sources:
      statsDS:
        driver-name: postgresql
        jndi-name: java:jboss/datasources/statsDS
        user-name: stats
        password: stats++
        valid-connection-checker-class-name: org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker
        exception-sorter-class-name: org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter
        xa-datasource-properties:
          URL: jdbc:postgresql://postgres4stats:5432/stats

      oracleDS:
        driver-name: oracle
        jndi-name: java:jboss/datasources/oracleDS
        user-name: ora
        password: ora++
        valid-connection-checker-class-name: org.jboss.jca.adapters.jdbc.extensions.oracle.OracleValidConnectionChecker
        validate-on-match: true
        background-validation: false
        stale-connection-checker-class-name: org.jboss.jca.adapters.jdbc.extensions.oracle.OracleStaleConnectionChecker
        exception-sorter-class-name: org.jboss.jca.adapters.jdbc.extensions.oracle.OracleExceptionSorter
        xa-datasource-properties:
          URL: jdbc:oracle:thin:@oracle:1521:XE

    jdbc-drivers:
      oracle:
        driver-class-name: oracle.jdbc.OracleDriver
        xa-datasource-class: oracle.jdbc.xa.client.OracleXADataSource
        driver-module-name: com.oracle
      postgresql:
        driver-class-name: org.postgresql.Driver
        xa-datasource-class: org.postgresql.xa.PGXADataSource
        driver-module-name: org.postgresql

В Resources/modules/com/oracle/main у меня есть файл module.xml и такой жес postgresql в правильном каталоге (org/postgresql/main).

Кажется, что все загружается нормально, пока я не запускаю uber-jar, ошибок нет.Я вижу INFO [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-3) WFLYJCA0001: Bound data source [java:jboss/datasources/statsDS] и то же самое с оракулом.А потом в логах: (Controller Boot Thread) WFLYSRV0025: Thorntail 2.2.0.Final (WildFly Core 3.0.8.Final) started in 3390ms - Started 221 of 413 services (256 services are lazy, passive or on-demand)

До этого я счастлив ... но ...

Насколько я понимаю, после запуска загрузочного контроллера начинается ройзагрузить мою войну.Все работает нормально, пока не попытается создать соединение:

DEBUG [org.jboss.jca.core.connectionmanager.pool.strategy.OnePool] (ServerService Thread Pool -- 5) statsDS: getConnection(null, WrappedConnectionRequestInfo@3ce4c9a9[userName=stats]) [0/20]
2018-10-01 12:26:21,025 DEBUG [org.jboss.jca.core.connectionmanager.pool.strategy.OnePool] (ServerService Thread Pool -- 16) oracleDS: getConnection(null, WrappedConnectionRequestInfo@1427a5a3[userName=ora]) [0/20]
2018-10-01 12:26:21,026 WARN  [org.jboss.jca.core.connectionmanager.pool.strategy.OnePool] (ServerService Thread Pool -- 16) IJ000604: Throwable while attempting to get a new connection: null: javax.resource.ResourceException: IJ031084: Unable to create connection
    at org.jboss.jca.adapters.jdbc.xa.XAManagedConnectionFactory.getXAManagedConnection(XAManagedConnectionFactory.java:509)
    at org.jboss.jca.adapters.jdbc.xa.XAManagedConnectionFactory.createManagedConnection(XAManagedConnectionFactory.java:416)
    at org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreConcurrentLinkedDequeManagedConnectionPool.createConnectionEventListener(SemaphoreConcurrentLinkedDequeManagedConnectionPool.java:1327)
    at org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreConcurrentLinkedDequeManagedConnectionPool.getConnection(SemaphoreConcurrentLinkedDequeManagedConnectionPool.java:499)
    at org.jboss.jca.core.connectionmanager.pool.AbstractPool.getSimpleConnection(AbstractPool.java:632)
    at org.jboss.jca.core.connectionmanager.pool.AbstractPool.getConnection(AbstractPool.java:604)
    at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.getManagedConnection(AbstractConnectionManager.java:624)
    at org.jboss.jca.core.connectionmanager.tx.TxConnectionManagerImpl.getManagedConnection(TxConnectionManagerImpl.java:430)
    at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.allocateConnection(AbstractConnectionManager.java:789)
    at org.jboss.jca.adapters.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:138)
    at org.jboss.as.connector.subsystems.datasources.WildFlyDataSource.getConnection(WildFlyDataSource.java:64)
    at org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.java:122)
    at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess.obtainConnection(JdbcEnvironmentInitiator.java:180)
    at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:68)
    at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:35)
    at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:88)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:254)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:228)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:207)
    at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:51)
    at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:94)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:237)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:207)
    at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.handleTypes(MetadataBuildingProcess.java:352)
    at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:111)
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:848)
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:875)
    at org.jboss.as.jpa.hibernate5.TwoPhaseBootstrapImpl.build(TwoPhaseBootstrapImpl.java:44)
    at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:167)
    at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:125)
    at org.wildfly.security.manager.WildFlySecurityManager.doChecked(WildFlySecurityManager.java:640)
    at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1.run(PersistenceUnitServiceImpl.java:209)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
    at org.jboss.threads.JBossThread.run(JBossThread.java:320)
Caused by: javax.resource.ResourceException: IJ031101: XADataSourceClass is undefined
    at org.jboss.jca.adapters.jdbc.xa.XAManagedConnectionFactory.getXADataSource(XAManagedConnectionFactory.java:621)
    at org.jboss.jca.adapters.jdbc.xa.XAManagedConnectionFactory.getXAManagedConnection(XAManagedConnectionFactory.java:493)
    ... 35 more

Невозможно создать соединение;xadatasourceclass undefined ... Я не вижу, что я сделал не так;и Google ни то, ни другое!

Так что, если у вас есть идеи, пожалуйста, скажите мне, спасибо.

Ответы [ 3 ]

0 голосов
/ 01 октября 2018

Согласно документации Thortnail: http://docs.wildfly -swarm.io / 2.0.0.Final / # _ источники данных .

Возможно, вам также следует определить класс xa-datasource-class вопределения источников данных.

И измените имя класса драйвера на имя-драйвера-xa-datasource-class-name.

Правка : Решение, которое в итоге сработало, заключалось в использованииXML-файл конфигурации для конфигурации источников данных.

Со своей стороны, я заметил, что файлы конфигурации YML приводили к некоторым ошибкам, когда они перезаписывали существующие свойства роя по умолчанию.

0 голосов
/ 09 ноября 2018

Я полагаю, вы столкнулись с той же проблемой, с которой я столкнулся недавно: THORN-1281

По сути, это означает, что вместо того, чтобы делать

    xa-datasource-properties:
      URL: jdbc:oracle:thin:@oracle:1521:XE

вы должны написать

    xa-datasource-properties:
      URL: 
        value: jdbc:oracle:thin:@oracle:1521:XE
0 голосов
/ 01 октября 2018

В соответствии с http://docs.wildfly -swarm.io / 2.2.0.Final / # _ источниками данных вам необходимо установить класс драйвера XA DataSource, как показано ниже:

jdbc-drivers:
  oracle:
    driver-class-name: oracle.jdbc.OracleDriver
    driver-xa-datasource-class-name: oracle.jdbc.xa.client.OracleXADataSource
    driver-module-name: com.oracle
  postgresql:
    driver-class-name: org.postgresql.Driver
    driver-xa-datasource-class-name: org.postgresql.xa.PGXADataSource
    driver-module-name: org.postgresql
...