disponibilidad comandos clusvcadm cluster alta java mysql jboss ejb wildfly

java - comandos - clusvcadm



Wildfly y auto reconexión a la base de datos. (3)

Este trabajo en Wildfly 8.1:

<datasource jta="true" jndi-name="java:jboss/datasources/xxxdb" pool-name="xxxxDB" enabled="true" use-ccm="false"> <connection-url>jdbc:mysql://localhost:3306/xxxdb?autoReconnect=true&amp;amp;useUnicode=true&amp;amp;characterEncoding=UTF-8</connection-url> <driver-class>com.mysql.jdbc.Driver</driver-class> <driver>mysql-connector-java-5.1.26-bin.jar</driver> <security> <user-name>xxxuser</user-name> <password>xxxpassword</password> </security> <validation> <check-valid-connection-sql>select 1</check-valid-connection-sql> <validate-on-match>false</validate-on-match> <background-validation>true</background-validation> <background-validation-millis>10000</background-validation-millis> </validation> <statement> <share-prepared-statements>false</share-prepared-statements> </statement> </datasource>

Tengo un cliente, un servidor y una base de datos. El cliente se comunica con el servidor a través de interfaces remotas EJB. Como servidor, uso un Wildfly 8.2.0. Como la base de datos - uso un MySQL. El servidor se comunica con MySQL a través de un JPA / Hibernate. Cuando apago el servidor MySQL, Wildfly lanza una excepción, por supuesto. Pero cuando vuelvo a encender MySQL, la Wildfly sigue arrojando el mismo ERROR . Tengo que apagar la Wildfly y devolverle la conexión para que la Wildfly vuelva a conectarse a la base de datos.

¿Cómo configurar la reconexión automática en el Wildfly?

Intenté establecer la reconexión automática en una URL de conexión: jdbc:mysql://localhost/db?autoReconnect=true&amp;useUnicode=yes&amp;characterEncoding=UTF8 y traté de agregar al archivo standalone-full.xml que utilizo, esto línea: <check-valid-connection-sql>select 1</check-valid-connection-sql> , pero ambas soluciones no funcionan.

standalone-full.xml:

<!-- ... --> <datasource jta="true" jndi-name="java:jboss/datasources/MySQLDS" pool-name="MySQLDS" enabled="true" use-ccm="true"> <connection-url>jdbc:mysql://localhost/db?autoReconnect=true&amp;amp;useUnicode=yes&amp;amp;characterEncoding=UTF8</connection-url> <driver-class>com.mysql.jdbc.Driver</driver-class> <driver>mysqlDriver</driver> <security> <user-name>user</user-name> <password>***</password> </security> <validation> <check-valid-connection-sql>select 1</check-valid-connection-sql> <validate-on-match>false</validate-on-match> <background-validation>false</background-validation> </validation> <timeout> <set-tx-query-timeout>false</set-tx-query-timeout> <blocking-timeout-millis>0</blocking-timeout-millis> <idle-timeout-minutes>0</idle-timeout-minutes> <query-timeout>0</query-timeout> <use-try-lock>0</use-try-lock> <allocation-retry>0</allocation-retry> <allocation-retry-wait-millis>0</allocation-retry-wait-millis> </timeout> <statement> <share-prepared-statements>false</share-prepared-statements> </statement> </datasource> <drivers> <driver name="mysqlDriver" module="com.mysql"> <xa-datasource-class>com.mysql.jdbc.Driver</xa-datasource-class> </driver> </drivers> <!-- ... -->


Puede establecer <background-validation> en true , porque esta opción tiene un mejor rendimiento y establecer <validate-on-match> en false


Resolví este problema cambiando el valor de validar en coincidencia a verdadero en mi archivo standalone-full.xml:

<validate-on-match>true</validate-on-match>