Я попытался последовать этому совету: MYSQL 8 часов Время ожидания проблемы и здесь: Миграция с MySql: сервер MariaDB неожиданно закрывает клиентские подключения , но мой реализация в JPA / Hibernate должна быть несколько не хватает. Есть большая вероятность, что я просто слепо не вижу что-то, что я сделал неправильно, но, возможно, вы можете заметить это или предоставить правильный подход, если этот подход приведения свойств в постоянство. xml был бесполезным?
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"
version="2.1">
<persistence-unit name="app">
<description> Hibernate JPA Configuration</description>
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="javax.persistence.jdbc.driver" value="org.mariadb.jdbc.Driver" />
<property name="javax.persistence.jdbc.url" value="jdbc:mariadb://localhost:3306/app" />
<property name="javax.persistence.jdbc.user" value="app" />
<property name="javax.persistence.jdbc.password" value="secretChangeMe" />
<property name="hibernate.dialect" value="org.hibernate.dialect.MariaDB53Dialect"/>
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.connection.maxIdleTime" value="60"/>
<property name="hibernate.archive.autodetection" value="class, hbm"/>
<property name="hibernate.dbcp.maxActive" value="8" />
<property name="hibernate.dbcp.maxIdle" value="8" />
<property name="hibernate.dbcp.maxWait" value="-1" />
<property name="hibernate.dbcp.whenExhaustedAction" value="1" />
<property name="hibernate.dbcp.testOnBorrow" value="true" />
<property name="hibernate.dbcp.testOnReturn" value="true" />
<property name="hibernate.dbcp.validationQuery" value="SELECT 1" />
</properties>
</persistence-unit>
</persistence>
Трассировка стека, которую я пытаюсь избежать, такова:
java.io.EOFException: unexpected end of stream, read 0 bytes from 4 (socket was closed by server)
org.mariadb.jdbc.internal.io.input.StandardPacketInputStream.getPacketArray(StandardPacketInputStream.java:246)
org.mariadb.jdbc.internal.io.input.StandardPacketInputStream.getPacket(StandardPacketInputStream.java:215)
org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.readPacket(AbstractQueryProtocol.java:1435)
org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.getResult(AbstractQueryProtocol.java:1415)
org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.executeQuery(AbstractQueryProtocol.java:228)
org.mariadb.jdbc.MariaDbStatement.executeInternal(MariaDbStatement.java:332)
org.mariadb.jdbc.MariaDbStatement.executeUpdate(MariaDbStatement.java:527)
org.mariadb.jdbc.MariaDbConnection.setAutoCommit(MariaDbConnection.java:741)
org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PooledConnections.poll(DriverManagerConnectionProviderImpl.java:282)
org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PoolState.getConnection(DriverManagerConnectionProviderImpl.java:430)
org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.getConnection(DriverManagerConnectionProviderImpl.java:171)
org.hibernate.internal.NonContextualJdbcConnectionAccess.obtainConnection(NonContextualJdbcConnectionAccess.java:35)
org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl.acquireConnectionIfNeeded(LogicalConnectionManagedImpl.java:106)
org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl.getPhysicalConnection(LogicalConnectionManagedImpl.java:136)
org.hibernate.engine.jdbc.internal.StatementPreparerImpl.connection(StatementPreparerImpl.java:47)
org.hibernate.engine.jdbc.internal.StatementPreparerImpl$5.doPrepare(StatementPreparerImpl.java:146)
org.hibernate.engine.jdbc.internal.StatementPreparerImpl$StatementPreparationTemplate.prepareStatement(StatementPreparerImpl.java:172)
org.hibernate.engine.jdbc.internal.StatementPreparerImpl.prepareQueryStatement(StatementPreparerImpl.java:148)
org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1988)
org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1918)
org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1896)
org.hibernate.loader.Loader.doQuery(Loader.java:936)
org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:339)
org.hibernate.loader.Loader.doList(Loader.java:2693)
org.hibernate.loader.Loader.doList(Loader.java:2676)
org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2510)
org.hibernate.loader.Loader.list(Loader.java:2505)
org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:504)
org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:396)
org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:219)
org.hibernate.internal.SessionImpl.list(SessionImpl.java:1537)
org.hibernate.query.internal.AbstractProducedQuery.doList(AbstractProducedQuery.java:1561)
org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1529)
org.hibernate.query.Query.getResultList(Query.java:165)
com.needhamsoftware.nslogin.servlet.LoginServlet.doPost(LoginServlet.java:141)
javax.servlet.http.HttpServlet.service(HttpServlet.java:661)
javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
Версии библиотеки:
compileOnly 'javax:javaee-api:7.0'
compile 'org.hibernate:hibernate-core:5.4.3.Final'
compile 'org.apache.commons:commons-dbcp2:2.7.0'
compile group: 'org.mariadb.jdbc', name: 'mariadb-java-client', version: '2.4.2'
Полный код, видимый здесь: https://github.com/nsoft/ns-login