Java JBoss 7 HSQLDB XA数据源

Java JBoss 7 HSQLDB XA数据源,java,jboss,jboss7.x,hsqldb,Java,Jboss,Jboss7.x,Hsqldb,我想在JBoss7中使用HSQLDB数据源。 但是我还想在XA模式下使用数据源。 据我所知,HSQLDB从2.2.0开始就支持XA事务,我正在使用最新版本的HSQLDB。我还在hsqldbjar中找到了相应的类文件:org.HSQLDB.jdbc.pool.JDBCXAConnection 但在启动时,我从JBoss获得以下异常: Throwable while attempting to get a new connection: null: javax.resource.ResourceEx

我想在JBoss7中使用HSQLDB数据源。 但是我还想在XA模式下使用数据源。 据我所知,HSQLDB从2.2.0开始就支持XA事务,我正在使用最新版本的HSQLDB。我还在hsqldbjar中找到了相应的类文件:org.HSQLDB.jdbc.pool.JDBCXAConnection

但在启动时,我从JBoss获得以下异常:

Throwable while attempting to get a new connection: null: javax.resource.ResourceException: Could not create connection
 at org.jboss.jca.adapters.jdbc.xa.XAManagedConnectionFactory.getXAManagedConnection(XAManagedConnectionFactory.java:461)
 at org.jboss.jca.adapters.jdbc.xa.XAManagedConnectionFactory.createManagedConnection(XAManagedConnectionFactory.java:398)
 at org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreArrayListManagedConnectionPool.createConnectionEventListener(SemaphoreArrayListManagedConnectionPool.java:781)
 at org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreArrayListManagedConnectionPool.getConnection(SemaphoreArrayListManagedConnectionPool.java:344)
 at org.jboss.jca.core.connectionmanager.pool.AbstractPool.getSimpleConnection(AbstractPool.java:397)
 at org.jboss.jca.core.connectionmanager.pool.AbstractPool.getConnection(AbstractPool.java:365)
 at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.getManagedConnection(AbstractConnectionManager.java:329)
 at org.jboss.jca.core.connectionmanager.tx.TxConnectionManagerImpl.getManagedConnection(TxConnectionManagerImpl.java:368)
 at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.allocateConnection(AbstractConnectionManager.java:464)
 at org.jboss.jca.adapters.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:139)
 at org.camunda.bpm.engine.impl.cfg.ProcessEngineConfigurationImpl.initDatabaseType(ProcessEngineConfigurationImpl.java:636) [camunda-engine-7.0.0-Final.jar:]
 at org.camunda.bpm.engine.impl.cfg.ProcessEngineConfigurationImpl.initDataSource(ProcessEngineConfigurationImpl.java:598) [camunda-engine-7.0.0-Final.jar:]
 at org.camunda.bpm.engine.impl.cfg.ProcessEngineConfigurationImpl.init(ProcessEngineConfigurationImpl.java:385) [camunda-engine-7.0.0-Final.jar:]
 at org.camunda.bpm.engine.impl.cfg.JtaProcessEngineConfiguration.init(JtaProcessEngineConfiguration.java:54) [camunda-engine-7.0.0-Final.jar:]
 at org.camunda.bpm.container.impl.jboss.config.ManagedJtaProcessEngineConfiguration.init(ManagedJtaProcessEngineConfiguration.java:34)
 at org.camunda.bpm.engine.impl.cfg.ProcessEngineConfigurationImpl.buildProcessEngine(ProcessEngineConfigurationImpl.java:357) [camunda-engine-7.0.0-Final.jar:]
 at org.camunda.bpm.container.impl.jboss.service.MscManagedProcessEngineController.startProcessEngine(MscManagedProcessEngineController.java:178)
 at org.camunda.bpm.container.impl.jboss.service.MscManagedProcessEngineController$2.run(MscManagedProcessEngineController.java:132)
 at org.camunda.bpm.container.impl.jboss.service.MscManagedProcessEngineController$2.run(MscManagedProcessEngineController.java:130)
 at org.camunda.bpm.container.impl.jboss.util.Tccl.runWithTccl(Tccl.java:53)
 at org.camunda.bpm.container.impl.jboss.util.Tccl.runUnderClassloader(Tccl.java:45)
 at org.camunda.bpm.container.impl.jboss.service.MscManagedProcessEngineController.startInternal(MscManagedProcessEngineController.java:130)
 at org.camunda.bpm.container.impl.jboss.service.MscManagedProcessEngineController$1.run(MscManagedProcessEngineController.java:91)
 at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [rt.jar:1.7.0_07]
 at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) [rt.jar:1.7.0_07]
 at java.util.concurrent.FutureTask.run(FutureTask.java:166) [rt.jar:1.7.0_07]
 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) [rt.jar:1.7.0_07]
 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) [rt.jar:1.7.0_07]
 at java.lang.Thread.run(Thread.java:722) [rt.jar:1.7.0_07]
 at org.jboss.threads.JBossThread.run(JBossThread.java:122)
Caused by: javax.resource.ResourceException: Could not find accessor on XADataSource: 
 at org.jboss.jca.adapters.jdbc.xa.XAManagedConnectionFactory.getXADataSource(XAManagedConnectionFactory.java:603)
 at org.jboss.jca.adapters.jdbc.xa.XAManagedConnectionFactory.getXAManagedConnection(XAManagedConnectionFactory.java:444)
 ... 29 more
Caused by: java.lang.NoSuchMethodException: Method setURL not found
 at org.jboss.jca.adapters.jdbc.util.Injection.inject(Injection.java:141)
 at org.jboss.jca.adapters.jdbc.util.Injection.inject(Injection.java:70)
 at org.jboss.jca.adapters.jdbc.xa.XAManagedConnectionFactory.getXADataSource(XAManagedConnectionFactory.java:578)
 ... 30 more
以下是我的数据源配置:

<xa-datasource jndi-name="java:jboss/datasources/LiferayDS" pool-name="LiferayDS" enabled="true" use-ccm="false">
    <xa-datasource-property name="URL">
        jdbc:hsqldb:file:../../hsql-data/LiferayDS
    </xa-datasource-property>
    <driver>hsqldb</driver>
    <xa-pool>
        <max-pool-size>10</max-pool-size>
        <is-same-rm-override>false</is-same-rm-override>
        <interleaving>false</interleaving>
        <pad-xid>false</pad-xid>
        <wrap-xa-resource>false</wrap-xa-resource>
    </xa-pool>
    <security>
        <user-name>sa</user-name>
        <password></password>
    </security>
    <validation>
        <validate-on-match>false</validate-on-match>
        <background-validation>false</background-validation>
    </validation>
    <statement>
        <prepared-statement-cache-size>0</prepared-statement-cache-size>
        <share-prepared-statements>false</share-prepared-statements>
    </statement>
</xa-datasource>

jdbc:hsqldb:file:../../hsql-data/LiferayDS
hsqldb
10
假的
假的
假的
假的
sa
假的
假的
0
假的
HSQLDB中的XA类似乎不提供公共XA配置接口。
我必须如何配置数据源才能在事务模式下使用HSQLDB?

好的,以下是HSQLDB xa数据源的正确配置

<xa-datasource jndi-name="java:jboss/datasources/LiferayDS" pool-name="LiferayDS" enabled="true" use-ccm="false">
    <xa-datasource-property name="Url">
        jdbc:hsqldb:file:../../hsql-data/LiferayDS
    </xa-datasource-property>
    <driver>hsqldb</driver>
    <xa-pool>
        <max-pool-size>10</max-pool-size>
        <is-same-rm-override>false</is-same-rm-override>
        <interleaving>false</interleaving>
        <pad-xid>false</pad-xid>
        <wrap-xa-resource>false</wrap-xa-resource>
    </xa-pool>
    <security>
        <user-name>sa</user-name>
        <password></password>
    </security>
    <validation>
        <validate-on-match>false</validate-on-match>
        <background-validation>false</background-validation>
    </validation>
    <statement>
        <prepared-statement-cache-size>0</prepared-statement-cache-size>
        <share-prepared-statements>false</share-prepared-statements>
    </statement>
</xa-datasource>

jdbc:hsqldb:file:../../hsql-data/LiferayDS
hsqldb
10
假的
假的
假的
假的
sa
假的
假的
0
假的

您确定HSQLDB支持XA事务吗?相反,HSQLDB似乎支持XA事务。将尝试在文档中查找示例。几乎可以肯定HSQLDB2.3.4支持XA事务。不幸的是,我在中找不到class
org.HSQLDB.jdbc.pool.JDBCXADataSource
。确实引用了
JDBCXADataSource
,它可能是一个内部类。