首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Wildfly和自动重新连接到数据库

Wildfly和自动重新连接到数据库
EN

Stack Overflow用户
提问于 2015-02-25 06:30:38
回答 3查看 30.8K关注 0票数 30

我有一个客户端,一个服务器和一个数据库。客户端通过EJB远程接口与服务器进行通信。作为服务器,我使用的是Wildfly 8.2.0。作为数据库-我使用MySQL。服务器通过JPA/Hibernate与MySQL通信。当然,当我关闭MySQL服务器时,Wildfly抛出了一个异常。但是当我再次打开MySQL时,Wildfly仍然抛出相同的ERROR。我必须关闭Wildfly,并将其返回到Wildfly重新连接到数据库。

如何在Wildfly中设置自动重新连接?

我尝试在连接URL:jdbc:mysql://localhost/db?autoReconnect=true&amp;useUnicode=yes&amp;characterEncoding=UTF8中设置自动重新连接,并尝试将其添加到我使用的standalone-full.xml文件中,这一行为:<check-valid-connection-sql>select 1</check-valid-connection-sql>,但两种解决方案都不起作用。

standalone-full.xml:

代码语言:javascript
复制
<!-- ... -->
<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>
<!-- ... -->
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-02-25 17:53:32

我通过将standalone-full.xml文件中的validate on-match值更改为true解决了这个问题:

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

票数 15
EN

Stack Overflow用户

发布于 2015-04-01 17:09:31

在Wildfly 8.1上工作:

代码语言:javascript
复制
         <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>
票数 26
EN

Stack Overflow用户

发布于 2017-06-14 15:59:53

您可以将<background-validation>设置为true,因为此选项具有更好的性能,并将<validate-on-match>设置为false

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28707650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档