【问题标题】:Wildfly CLI XA-Datasource missing propertyWildfly CLI XA-Datasource 缺少属性
【发布时间】:2018-08-20 05:54:36
【问题描述】:

我搜索了官方 Wildfly 10 文档并搜索了网络,但奇怪的是我没有找到解决问题的方法。当我运行 CLI 并尝试配置 XA-Datasource 时,我无法配置属性 xa-datasource-property

这些是我尝试过的命令:

/subsystem=datasources/xa-data-source=TestDataSource/:add(driver-name=XA-Oracle,jndi-name=java:jboss/datasources/testDS,background-validation=false,enlistment-trace=false,flush-strategy=FailingConnectionOnly,max-pool-size=20,min-pool-size=10,no-recovery=false,password=TEST,pool-prefill=true,query-timeout=10,same-rm-override=false,statistics-enabled=true,track-statements=NOWARN,url-property=jdbc:oracle:thin:@TEST:orcl,user-name=USERNAME,validate-on-match=false,enabled=true,allow-multiple-users=false,xa-datasource-properties={"URL"=>{"value"=>"jdbc:oracle:thin"}})
/subsystem=datasources/xa-data-source=TestDataSource/:add(driver-name=XA-Oracle,jndi-name=java:jboss/datasources/testDS,background-validation=false,enlistment-trace=false,flush-strategy=FailingConnectionOnly,max-pool-size=20,min-pool-size=10,no-recovery=false,password=TEST,pool-prefill=true,query-timeout=10,same-rm-override=false,statistics-enabled=true,track-statements=NOWARN,url-property=jdbc:oracle:thin:@TEST:orcl,user-name=USERNAME,validate-on-match=false,enabled=true,allow-multiple-users=false,xa-datasource-properties={"name"=>"URL","value"=>"jdbc:oracle:thin"})
/subsystem=datasources/xa-data-source=TestDataSource/:add(driver-name=XA-Oracle,jndi-name=java:jboss/datasources/testDS,background-validation=false,enlistment-trace=false,flush-strategy=FailingConnectionOnly,max-pool-size=20,min-pool-size=10,no-recovery=false,password=TEST,pool-prefill=true,query-timeout=10,same-rm-override=false,statistics-enabled=true,track-statements=NOWARN,url-property=jdbc:oracle:thin:@TEST:orcl,user-name=USERNAME,validate-on-match=false,enabled=true,allow-multiple-users=false,xa-datasource-property={"name"=>"URL","value"=>"jdbc:oracle:thin"})
/subsystem=datasources/xa-data-source=TestDataSource/:add(driver-name=XA-Oracle,jndi-name=java:jboss/datasources/testDS,background-validation=false,enlistment-trace=false,flush-strategy=FailingConnectionOnly,max-pool-size=20,min-pool-size=10,no-recovery=false,password=TEST,pool-prefill=true,query-timeout=10,same-rm-override=false,statistics-enabled=true,track-statements=NOWARN,url-property=jdbc:oracle:thin:@TEST:orcl,user-name=USERNAME,validate-on-match=false,enabled=true,allow-multiple-users=false,xa-datasource-property={"URL"=>{"value"=>"jdbc:oracle:thin"}})

无论我尝试哪种类型的配置,它都会告诉我 property xa-datasource-propertiesxa-datasource-property未知。当使用 TAB 来完成代码时,它会提供我的很多属性,但找不到所需的属性。

另外,如果我忽略它,它会说:

{
    "outcome" => "failed",
    "failure-description" => "WFLYJCA0069: At least one xa-datasource-property is required for an xa-datasource",
    "rolled-back" => true
}

我错过了什么?

【问题讨论】:

    标签: database command-line-interface wildfly datasource


    【解决方案1】:

    由于某种奇怪的原因,只能使用如下所示的不同语法:

    xa-data-source add --name=Test --allow-multiple-users=false --connectable=true --driver-name=XA-Oracle --enabled=true --interleaving=false --jndi-name=java:jboss/datasources/test --max-pool-size=20 --min-pool-size=10 --no-tx-separate-pool=false --pad-xid=false --password=PASSWORD --pool-prefill=true --use-ccm=true --use-java-context=true --user-name=USERNAME --wrap-xa-resource=true --xa-datasource-properties=URL=jdbc:oracle:thin
    

    我不明白为什么首选的 cli 语法方法不起作用,但使用此方法将是可配置的。

    如果有人知道一种使它在其他语法中工作的方法,我将不胜感激。

    【讨论】:

      【解决方案2】:

      在 Wildfly 10 上有效:

      /subsystem=datasources/xa-data-source=TestDataSource/:add(driver-name=XA-Oracle,jndi-name=java:jboss/datasources/testDS,background-validation=false,enlistment-trace=false,flush-strategy=FailingConnectionOnly,max-pool-size=20,min-pool-size=10,no-recovery=false,password=TEST,pool-prefill=true,query-timeout=10,same-rm-override=false,statistics-enabled=true,track-statements=NOWARN,url-property=jdbc:oracle:thin:@TEST:orcl,user-name=USERNAME,validate-on-match=false,enabled=true,allow-multiple-users=false,xa-datasource-class=oracle.jdbc.xa.client.OracleXADataSource)

      注意最后一个属性,这是必需的,否则测试连接可能会失败。

      此外,Wildfly 13 中显然存在一个错误,它无法解释 @ 符号并报告一个错误

      至少需要一个或多个 xa-datasource-property。

      应该在 Wildfly 14 中进行修复。但是,我发现问题仍然存在。

      【讨论】:

      • 不适用于 wildfly 20:WFLYJCA0069:xa-datasource 至少需要一个 xa-datasource-property。 Nico 的回答奏效了。
      【解决方案3】:

      即使是 WildFly 18 也有这个问题。我使用了下面这样的示例命令..
      使用xa-datasource-properties 创建xa-datasource

      xa-data-source add --jndi-name=java:/jdbc/TesteOracle --name=TesteOracle --driver-name=oracle --password=usuario --user-name=senha  
      --xa-datasource-properties=URL=jdbc:oracle:thin:@localhost:1521:HE
      

      【讨论】:

        【解决方案4】:

        似乎必须在创建时禁用数据源.. 它对我有用

        xa-data-source add \
            --name=talentia-xxxxx\
            --driver-name=sqlserver \
            --jndi-name=java:jboss/datasources/xxxxx \
            --user-name=xxxxx \
            --password=xxxx \
            --min-pool-size=10 \
            --max-pool-size=20 \
            --enabled=false \
            --use-java-context=true
            
        /subsystem=datasources/xa-data-source=xxxxxx/xa-datasource-properties=URL:add( \
            value=jdbc:sqlserver://xxxxxxxx \
        )
        
        /subsystem=datasources/xa-data-source=xxxxxxx:write-attribute( \
            name=valid-connection-checker-class-name, \
            value=org.jboss.jca.adapters.jdbc.extensions.mssql.MSSQLValidConnectionChecker \
        )
        
        /subsystem=datasources/xa-data-source=xxxxx:write-attribute( \
            name=background-validation, \
            value=true \
        )
        
        /subsystem=datasources/xa-data-source=xxxxx:write-attribute( \
            name=same-rm-override, \
            value=true \
        )
        
        xa-data-source enable --name = xxxxx
        

        【讨论】:

          【解决方案5】:

          可以通过 CLI 以交互方式完成,例如通过批量声明所有具有数据源的属性:

          [standalone@localhost:9990 /] batch
          [standalone@localhost:9990 / #] /subsystem=datasources/xa-data-source=MariaDBXADS:add(driver-name=mariadb-xa, jndi-name=java:jboss/datasources/MariaDBXADS, user-name=jdv_user, password=jdv_pass, use-java-context=true)
          [standalone@localhost:9990 / #] /subsystem=datasources/xa-data-source=MariaDBXADS/xa-datasource-properties=test:add(value=test-value)
          [standalone@localhost:9990 / #] run-batch
          The batch executed successfully
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-01-28
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多