JBoss CLI 转义 SELECT 1
JBoss CLI escaping SELECT 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 管理控制台还在配置 -> 数据源 -> 验证> 检查有效 Sql 属性
中显示 SELECT''1
尝试了几种正确的转义方式,但都没有成功。有什么想法吗?
您可以使用 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
您可以编辑您的独立 (-).xml 或域 (-).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>
还没来得及分享结果,所以:
JBoss EAP 在 7.1 版之前有一个空格错误。2.Final (EAP)
https://issues.jboss.org/browse/AS7-4263
使用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 管理控制台还在配置 -> 数据源 -> 验证> 检查有效 Sql 属性
中显示SELECT''1
尝试了几种正确的转义方式,但都没有成功。有什么想法吗?
您可以使用 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
您可以编辑您的独立 (-).xml 或域 (-).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>
还没来得及分享结果,所以:
JBoss EAP 在 7.1 版之前有一个空格错误。2.Final (EAP) https://issues.jboss.org/browse/AS7-4263