2017-03-10 1 views
0

En utilisant JBoss (EAP 6.4) CLI pour déployer, et à ce stade, vous voulez ajouter une source de données.JBoss CLI s'échappe de SELECT 1

La commande cli est comme ce

/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\) 

L'appel add exact ressemble à ceci:

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

En fait, seule cette partie est intéressante

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

Après un déploiement Successfull, la Les espaces seront remplacés par une double apostrophe. C'est ce que je reçois dans le journal pgsql:

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

La console d'administration JBoss montre également SELECT''1 dans la configuration -> Sources de données -> Validation> Vérifier attribut valide Sql

Essayé pour échapper correctement plusieurs façons , sans succès. Une idée?

Répondre

0

Vous pouvez définir la source de données à l'aide de la commande data-source add, en spécifiant les valeurs d'argument appropriées.

mode Domaine:

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

mode autonome:

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

Un exemple de réalisation:

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 

Pour obtenir une liste des options disponibles:

[[email protected]:9999 /] data-source add --help 
+0

Merci pour cela, mais la configuration est ok et fonctionne! Le seul problème est avec l'espace qui s'échappe pour une raison quelconque. J'ai ajouté mon appel exact de la méthode add à la description. –

0

Vous pouvez modifier votre autonome (- ) .xml ou domaine (-) .xml pour configurer une source de données:

<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> 
+0

Oui, c'est correct, mais mon problème n'est pas de pouvoir définir la bonne valeur pendant le processus de déploiement. Ce n'est pas une option pour éditer les fichiers de configuration chaque fois qu'un nouveau déploiement se produit. –