代码之家  ›  专栏  ›  技术社区  ›  Nico

Wildfly CLI XA数据源缺少属性

  •  1
  • Nico  · 技术社区  · 7 年前

    我在官方的Wildfly 10文档中搜索过,也在网上搜索过,但奇怪的是,我没有找到问题的解决方案。当我运行CLI并尝试配置XA数据源时,我无法配置属性 xa数据源属性

    以下是我尝试过的命令:

    /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"}})
    

    无论我尝试哪种配置,它都会告诉我 所有物 xa数据源属性 xa数据源属性 未知的 。当使用TAB完成代码时,它将提供我的许多属性,但找不到所需的属性。 CLI code completion

    此外,如果我省略它,它会说:

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

    我错过了什么?

    5 回复  |  直到 7 年前
        1
  •  3
  •   Nico    7 年前

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

    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
  •  2
  •   Ben Lachman    6 年前

    在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中显然有一个bug,它无法解释 @ 符号并报告一个错误

    至少需要一个或多个xa datasource属性。

    本应在Wildfly 14中进行修复。然而,我看到问题仍然存在。

        3
  •  1
  •   Jaimil Patel    4 年前

    即使是WildFly 18也有这个问题。我使用了如下示例命令。。
    要执行 xa-datasource 使用创建 xa-datasource-properties

    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
  •  1
  •   Greg Henry    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
  •  0
  •   viktor    3 年前

    可以通过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