1

使用 JBoss (EAP 6.4) CLI 进行部署,此时,想添加一个数据源。

cli命令是这样的

/profile=XXX/subsystem=datasources/data-source=XXX:add\(connection-url=XXX,url-delimiter="|",jndi-name=java:jboss/datasources/XXX,driver-name=postgresql,user-name=XXX,password=XXX,check-valid-connection-sql="SELECT 1",validate-on-match=true,background-validation=false,share-prepared-statements=false\)

确切的add调用如下所示:

/data-source=${DS_NAME}:add(                     \
      connection-url=${DS_CONNECTION_URL},           \
      jndi-name=${DS_JNDI_NAME},                     \
      driver-name=${DS_DRIVER_NAME},                 \
      user-name=${DB_USER},                          \
      password=${DB_USER_PASSWD},                    \
      check-valid-connection-sql=\"SELECT 1\",       \
      validate-on-match=true,                        \
      background-validation=false,                   \
      share-prepared-statements=false)

其实只有这部分很有趣

check-valid-connection-sql="SELECT 1"

成功部署后,空格将替换为双撇号。这是我在 pgsql 日志中得到的:

ERROR: syntax error at or near "1" at character 9
STATEMENT: SELECT''1

JBoss 管理控制台还显示SELECT''1在 Configuration -> Datasources -> Validation > Check Valid Sql 属性中

试图以几种方式正确地逃脱它,但没有成功。任何想法?

4

3 回答 3

0

您可以使用data-source add命令定义数据源,指定适当的参数值。

域模式:

data-source add --profile=<default | ha | full | full-ha> --name=<Resource ID> --connection-url=<Connection URL> --jndi-name=<JNDI Name> --driver-name=<Driver Name>

单机模式:

data-source add --name=<Resource ID> --connection-url=<Connection URL> --jndi-name=<JNDI Name> --driver-name=<Driver Name>

一个工作示例:

data-source add \
    --name=TEST \
    --check-valid-connection-sql="Select 1" \
    --driver-name=h2 --jndi-name=java:jboss/test \
    --connection-url=jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE

要获取可用选项的列表:

[standalone@localhost:9999 /] data-source add --help
于 2017-03-10T18:00:18.850 回答
0

您可以编辑您的standalone(- ).xml 或domain(- ).xml 来配置数据源:

<subsystem xmlns="urn:jboss:domain:datasources:1.2">
    <datasources>
      <datasource jndi-name="java:jboss/datasources/OracleDS" pool-name="OracleDS" enabled="true" use-java-context="true">
        <connection-url>jdbc:oracle:thin:@myhostname:1521:oracle</connection-url>
        <driver>oracle</driver>
        <pool>
          <min-pool-size>10</min-pool-size>
          <max-pool-size>20</max-pool-size>
          <prefill>true</prefill>
        </pool>
        <security>
          <user-name>myuser</user-name>
          <password>mypass</password>
        </security>
        <validation>
          <validate-on-match>true</validate-on-match>
          <check-valid-connection-sql>select 1</check-valid-connection-sql>
          <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleExceptionSorter"></exception-sorter>
        </validation>
      </datasource>
      <drivers>
        <driver name="oracle" module="com.oracle.jdbc">
          <xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
        </driver>
      </drivers>
    </datasources>
  </subsystem>
于 2017-03-12T15:48:10.407 回答
0

还没有分享结果,所以:

JBoss EAP 在版本 7.1.2.Final (EAP) https://issues.jboss.org/browse/AS7-4263之前存在空格错误

于 2017-06-12T11:34:49.500 回答