Wildfly 및 자동으로 데이터베이스에 다시 연결
고객과 서버 그리고 데이터베이스가 있습니다.클라이언트는 EJB 원격 인터페이스를 통해 서버와 통신합니다.서버로서 - Wildfly 8.2.0을 사용합니다.데이터베이스로서 - MySQL을 사용합니다.서버는 JPA/Hibernate를 통해 MySQL과 통신합니다.MySQL 서버를 끄면 당연히 와일드플라이는 예외를 던집니다.그러나 MySQL을 다시 켜면 Wildfly는 여전히 동일한 오류를 발생시킵니다.와일드플라이를 끄고 다시 데이터베이스에 연결하라고 돌려놔야 합니다.
와일드플라이에서 자동 재접속을 설정하는 방법?
연결 URL에 자동 재연결을 설정하려고 했습니다.jdbc:mysql://localhost/db?autoReconnect=true&useUnicode=yes&characterEncoding=UTF8
그리고 사용하는 standalone-full.xml 파일에 다음 줄을 추가하려고 했습니다.<check-valid-connection-sql>select 1</check-valid-connection-sql>
, 하지만 두 가지 해결책 모두 효과가 없습니다.
독립 실행형-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;useUnicode=yes&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>
<!-- ... -->
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;useUnicode=true&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>
독립 실행형-full.xml 파일에서 일치 확인 값을 true로 변경하여 이 문제를 해결했습니다.
<validate-on-match>true</validate-on-match>
설정 가능합니다.<background-validation>
로.true
, 왜냐하면 이 옵션은 더 좋은 성능과 세트를 가지고 있기 때문입니다.<validate-on-match>
로.false
언급URL : https://stackoverflow.com/questions/28707650/wildfly-and-auto-reconnect-to-the-database
'programing' 카테고리의 다른 글
빌드의 일부로 Xml 직렬화 어셈블리 생성 (0) | 2023.11.06 |
---|---|
Oracle: 조건을 포함한 전체 텍스트 검색 (0) | 2023.11.06 |
javascript code 실행 전에 javascript 파일이 모두 로딩될 때까지 기다리는 것이 가능합니까? (0) | 2023.11.06 |
MYSQL LOAD DATA INFILE 중복 행 무시(기본 키로 자동 증가) (0) | 2023.11.06 |
설치된 모든 node.js 모듈의 목록을 인쇄합니다. (0) | 2023.11.01 |