当前位置: 首页 > 知识库问答 >
问题:

JAVA JPApersistence.xml-如何在我的应用程序中使用之前测试连接有效性

柴增
2023-03-14

我使用Google Guice Persist(JPA)来操作数据。我的web应用程序在Jetty服务器上。以下是我的坚持。xml:

    <persistence xmlns="http://java.sun.com/xml/ns/persistence"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
                                 http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
             version="2.0">

    <persistence-unit name="MyJpaUnit" transaction-type="RESOURCE_LOCAL">
        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>

        <class>my.api.repository.entity.Foo</class>
        <shared-cache-mode>NONE</shared-cache-mode>

        <properties>
            <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
            <property name="javax.persistence.jdbc.url"
                      value="jdbc:mysql://127.0.0.1/testing?characterEncoding=UTF-8&amp;zeroDateTimeBehavior=convertToNull&amp;autoReconnect=true" />
            <property name="javax.persistence.jdbc.user" value="test_account" />
            <property name="javax.persistence.jdbc.password" value="test_pwd" />
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
            <property name="hibernate.show_sql" value="false"/>
            <property name="format_sql" value="false"/>

            <property name="hibernate.cache.use_second_level_cache" value="true"/>
            <property name="hibernate.cache.use_query_cache" value="false" />
            <property name="hibernate.c3p0.max_size" value="30" />
            <property name="hibernate.c3p0.min_size" value="5" />
            <property name="hibernate.c3p0.acquire_increment" value="1" />
            <property name="hibernate.c3p0.idle_test_period" value="300" />
            <property name="hibernate.c3p0.max_statements" value="0" />
            <property name="hibernate.c3p0.timeout" value="100" />
            <property name="hibernate.c3p0.preferredTestQuery" value="SELECT 1" />
            <property name="hibernate.c3p0.testConnectionOnCheckout" value="true" />
        </properties>
    </persistence-unit>
</persistence>

我的应用程序空闲时出现以下错误:

[c3p0]发生了另一个错误[com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:从服务器成功接收的最后一个数据包是49492938毫秒前。成功发送到服务器的最后一个数据包是49492938毫秒前。长于服务器配置的“等待超时”值。在应用程序中使用之前,应考虑过期和/或测试连接有效性,增加正在为客户端超时设置服务器配置的值,或使用连接器/J连接属性“autoReconnect=true”来避免此问题。]不会向听众报告!

com.mysql.jdbc.exceptions.jdbc4.通信异常:从服务器成功接收到的最后一个数据包是49,492,938毫秒前。成功发送到服务器的最后一个数据包是49,492,938毫秒前。比服务器配置的值“wait_timeout”长。在应用程序中使用之前,您应该考虑过期和/或测试连接有效性,增加客户端超时的服务器配置值,或者使用Connector/J连接属性“自动重新连接=true”来避免此问题。

如何配置persistence.xml以避免此问题?谢谢。

共有1个答案

壤驷德寿
2023-03-14

我遇到了这个问题。这个问题的原因是未关闭的实体管理器。每当您在数据库上做某事时,请创建一个新的实体管理器,然后关闭实体管理器。

 类似资料:
  • 问题内容: 我刚刚在我的express应用程序中添加了shouldjs和mocha进行测试,但是我想知道如何测试我的应用程序。我想这样做: 当然,测试套件中的最后一个测试只是告诉med,res.render函数(在show_create_user_screen中调用)是未定义的,可能是因为服务器未运行且配置尚未完成。所以我想知道其他人如何设置他们的测试? 问题答案: 好的,虽然测试路由代码是您可能

  • 我已使用SAML测试连接器将我的Web应用程序添加到onelogin中。在配置选项卡中,我给出了以下值 收件人:http://localhost:8080/em/live/pages/samlAuth/ ACS(消费者)URL验证器*:^ ACS(消费者)URL*:http://localhost:8080/ws_em/rest/accounts/consume-saml公司 登录网址:http:

  • 我试图测试一个Android应用程序。 我已将APK上载到“Alpha”部分,但给定链接返回错误500: "与您的测试人员分享以下链接:https://play.google.com/apps/testing/program"。 测试版返回相同的错误。 当然,我的应用程序已经发布了,但只是Alpha版本。 有人对此有解决办法吗?或者我必须先在Google Play上发布一个工作版本?或者测试链路存

  • 这是我的简单测试用例: 正因为如此: 点击后,我会更改,所以我想在这里访问我的属性,以检查是否真的发生了更改。 我注意到有一件奇怪的事情,当我构建我的应用程序并检查构建的内容时,我的UITest目标没有构建。这很重要吗?

  • 我正在使用多个线程在不同的表中插入插入记录。此外,我正在使用批处理的记录插入,以提高效率。 注意:要插入的记录数以百万为单位。 我的问题是,在这种多线程环境中,我应该使用连接池吗? 我关心的问题: 每个线程将运行相当长的时间来执行数据库操作。所以,如果我的连接池的大小是2,线程的数量是4,那么在给定的时刻只有2个线程将运行。因此,其他两个线程将会在很长一段时间内保持理想状态以获得连接,因为针对百万

  • 问题内容: 如何在Java GWT应用程序中使用OAuth?特别是,我想使用以下API获取我的Google Aps域中的用户列表: http://code.google.com/googleapps/domain/profiles/developers_guide_protocol.html 我知道这听起来像是一个问题,以前可能已经问过很多次了,但是我找不到关于如何实现上述API中描述的OAuth