首次登录:HTTP状态500

编程入门 行业动态 更新时间:2024-10-22 22:49:28
首次登录:HTTP状态500 - 请求处理失败;(First Login: HTTP Status 500 - Request processing failed; nested exception is org.springframework.transaction.CannotCreateTransactionException)

我用Spring,Hibernate和MySQL制作了一个Java webapp。 它运行正常,但在第一次尝试连接时,出现以下错误:

HTTP Status 500 - Request processing failed; nested exception is org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.TransactionException: JDBC begin failed: type Exception report message Request processing failed; nested exception is org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.TransactionException: JDBC begin failed: description The server encountered an internal error that prevented it from fulfilling this request. exception org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.TransactionException: JDBC begin failed: org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:656) org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560) javax.servlet.http.HttpServlet.service(HttpServlet.java:641) javax.servlet.http.HttpServlet.service(HttpServlet.java:722) root cause org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.TransactionException: JDBC begin failed: org.springframework.orm.hibernate3.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:596) org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:371) org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:317) org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:105) org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202) $Proxy31.getTodosUsuariosList(Unknown Source) com.companyname.springapp.service.SimpleAnonimoManager.identificarse(SimpleAnonimoManager.java:21) com.companyname.springapp.web.IdentificarseFormController.onSubmit(IdentificarseFormController.java:40) sun.reflect.GeneratedMethodAccessor88.invoke(Unknown Source) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) java.lang.reflect.Method.invoke(Method.java:597) org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:174) org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:421) org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:409) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:771) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644) org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560) javax.servlet.http.HttpServlet.service(HttpServlet.java:641) javax.servlet.http.HttpServlet.service(HttpServlet.java:722) root cause org.hibernate.TransactionException: JDBC begin failed: org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:96) org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1463) org.springframework.orm.hibernate3.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:555) org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:371) org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:317) org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:105) org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202) $Proxy31.getTodosUsuariosList(Unknown Source) com.companyname.springapp.service.SimpleAnonimoManager.identificarse(SimpleAnonimoManager.java:21) com.companyname.springapp.web.IdentificarseFormController.onSubmit(IdentificarseFormController.java:40) sun.reflect.GeneratedMethodAccessor88.invoke(Unknown Source) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) java.lang.reflect.Method.invoke(Method.java:597) org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:174) org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:421) org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:409) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:771) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644) org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560) javax.servlet.http.HttpServlet.service(HttpServlet.java:641) javax.servlet.http.HttpServlet.service(HttpServlet.java:722) root cause com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure The last packet successfully received from the server was 4,665,488 milliseconds ago. The last packet sent successfully to the server was 0 milliseconds ago. sun.reflect.GeneratedConstructorAccessor139.newInstance(Unknown Source) sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) java.lang.reflect.Constructor.newInstance(Constructor.java:513) com.mysql.jdbc.Util.handleNewInstance(Util.java:411) com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1121) com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3670) com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3559) com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4110) com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2570) com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2731) com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2809) com.mysql.jdbc.ConnectionImpl.setAutoCommit(ConnectionImpl.java:5333) org.apache.commons.dbcp.DelegatingConnection.setAutoCommit(DelegatingConnection.java:331) org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.setAutoCommit(PoolingDataSource.java:317) org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:91) org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1463) org.springframework.orm.hibernate3.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:555) org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:371) org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:317) org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:105) org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202) $Proxy31.getTodosUsuariosList(Unknown Source) com.companyname.springapp.service.SimpleAnonimoManager.identificarse(SimpleAnonimoManager.java:21) com.companyname.springapp.web.IdentificarseFormController.onSubmit(IdentificarseFormController.java:40) sun.reflect.GeneratedMethodAccessor88.invoke(Unknown Source) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) java.lang.reflect.Method.invoke(Method.java:597) org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:174) org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:421) org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:409) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:771) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644) org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560) javax.servlet.http.HttpServlet.service(HttpServlet.java:641) javax.servlet.http.HttpServlet.service(HttpServlet.java:722) root cause java.io.EOFException: Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost. com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:3119) com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3570) com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3559) com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4110) com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2570) com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2731) com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2809) com.mysql.jdbc.ConnectionImpl.setAutoCommit(ConnectionImpl.java:5333) org.apache.commons.dbcp.DelegatingConnection.setAutoCommit(DelegatingConnection.java:331) org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.setAutoCommit(PoolingDataSource.java:317) org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:91) org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1463) org.springframework.orm.hibernate3.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:555) org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:371) org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:317) org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:105) org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202) $Proxy31.getTodosUsuariosList(Unknown Source) com.companyname.springapp.service.SimpleAnonimoManager.identificarse(SimpleAnonimoManager.java:21) com.companyname.springapp.web.IdentificarseFormController.onSubmit(IdentificarseFormController.java:40) sun.reflect.GeneratedMethodAccessor88.invoke(Unknown Source) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) java.lang.reflect.Method.invoke(Method.java:597) org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:174) org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:421) org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:409) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:771) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644) org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560) javax.servlet.http.HttpServlet.service(HttpServlet.java:641) javax.servlet.http.HttpServlet.service(HttpServlet.java:722) note The full stack trace of the root cause is available in the Apache Tomcat/7.0.32 logs. Apache Tomcat/7.0.32

它只发生在第一次尝试。 如果我重新加载页面或尝试再次识别,它会正确运行。

我在互联网上搜索了很多可能的解决方案,我尝试了其中的一些解决方案,但它还没有运行。 昨天我尝试了一个似乎是正确的解决方案,当我上传它时,它运行良好,但今天错误再次出现,所以我不知道该怎么办。

这些是我的配置文件:

jdbc.properties

hibernate.generate_statistics = true hibernate.show_sql = true jdbc.driverClassName=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/database jdbc.username=user jdbc.password=pass hibernate.dialect=org.hibernate.dialect.MySQLDialect hibernate.format_sql=true hibernate.hbm2ddl.auto=update hibernate.current_session_context_class=thread

的hibernate.cfg.xml

<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <mapping class="com.companyname.springapp.domain.Contrato" /> <mapping class="com.companyname.springapp.domain.ContratoDraftInicial" /> <mapping class="com.companyname.springapp.domain.Derecho" /> <mapping class="com.companyname.springapp.domain.Equipo" /> <mapping class="com.companyname.springapp.domain.EstadisticaEquipo" /> <mapping class="com.companyname.springapp.domain.EstadisticaJugador" /> <mapping class="com.companyname.springapp.domain.Jugador" /> <mapping class="com.companyname.springapp.domain.Usuario" /> </session-factory> </hibernate-configuration>

APP-config.xml中

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"> <property name="basename" value="messages"/> </bean> <!-- Scans the classpath of this application for @Components to deploy as beans --> <context:component-scan base-package="com.companyname.springapp.web" /> <!-- Configures the @Controller programming model --> <mvc:annotation-driven/> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property> <property name="prefix" value="/jsp/"></property> <property name="suffix" value=".jsp"></property> </bean> </beans>

applicationContext.xml中

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <!-- holding properties for database connectivity /--> <context:property-placeholder location="classpath:jdbc.properties"/> <!-- enabling annotation driven configuration /--> <context:annotation-config/> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="${jdbc.driverClassName}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <property name="configLocation"> <value>classpath:hibernate.cfg.xml</value> </property> <property name="configurationClass"> <value>org.hibernate.cfg.AnnotationConfiguration</value> </property> </bean> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory"/> </bean> <tx:annotation-driven transaction-manager="transactionManager"/> <!-- Scans the classpath of this application for @Components to deploy as beans --> <context:component-scan base-package="com.companyname.springapp.repository" /> <context:component-scan base-package="com.companyname.springapp.service" /> </beans>

web.xml中

<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <!-- <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring/applicationContext.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <display-name>Springapp</display-name> <servlet> <servlet-name>springapp</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring/app-config.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springapp</servlet-name> <url-pattern>*.htm</url-pattern> </servlet-mapping> </web-app>

为了调用数据库,我这样做(我把类的一个例子):EquipoDaoImp.java

@Repository(value = "equipoDao") public class EquipoDaoImp implements EquipoDao { private final SessionFactory sessionFactory; @Autowired public EquipoDaoImp(SessionFactory sessionFactory) { this.sessionFactory = sessionFactory; } @Override @Transactional(readOnly = true) public Integer getIdEquipo(String nombreUsuario) { return (Integer) this.sessionFactory.getCurrentSession() .createQuery("from Equipo e order by e.id") .uniqueResult(); } }

任何想法为什么会发生?

I have made a Java webapp with Spring, Hibernate and MySQL. It runs correctly, but in the first attempt to connect, I have the following error:

HTTP Status 500 - Request processing failed; nested exception is org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.TransactionException: JDBC begin failed: type Exception report message Request processing failed; nested exception is org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.TransactionException: JDBC begin failed: description The server encountered an internal error that prevented it from fulfilling this request. exception org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.TransactionException: JDBC begin failed: org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:656) org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560) javax.servlet.http.HttpServlet.service(HttpServlet.java:641) javax.servlet.http.HttpServlet.service(HttpServlet.java:722) root cause org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.TransactionException: JDBC begin failed: org.springframework.orm.hibernate3.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:596) org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:371) org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:317) org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:105) org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202) $Proxy31.getTodosUsuariosList(Unknown Source) com.companyname.springapp.service.SimpleAnonimoManager.identificarse(SimpleAnonimoManager.java:21) com.companyname.springapp.web.IdentificarseFormController.onSubmit(IdentificarseFormController.java:40) sun.reflect.GeneratedMethodAccessor88.invoke(Unknown Source) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) java.lang.reflect.Method.invoke(Method.java:597) org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:174) org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:421) org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:409) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:771) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644) org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560) javax.servlet.http.HttpServlet.service(HttpServlet.java:641) javax.servlet.http.HttpServlet.service(HttpServlet.java:722) root cause org.hibernate.TransactionException: JDBC begin failed: org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:96) org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1463) org.springframework.orm.hibernate3.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:555) org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:371) org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:317) org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:105) org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202) $Proxy31.getTodosUsuariosList(Unknown Source) com.companyname.springapp.service.SimpleAnonimoManager.identificarse(SimpleAnonimoManager.java:21) com.companyname.springapp.web.IdentificarseFormController.onSubmit(IdentificarseFormController.java:40) sun.reflect.GeneratedMethodAccessor88.invoke(Unknown Source) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) java.lang.reflect.Method.invoke(Method.java:597) org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:174) org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:421) org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:409) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:771) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644) org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560) javax.servlet.http.HttpServlet.service(HttpServlet.java:641) javax.servlet.http.HttpServlet.service(HttpServlet.java:722) root cause com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure The last packet successfully received from the server was 4,665,488 milliseconds ago. The last packet sent successfully to the server was 0 milliseconds ago. sun.reflect.GeneratedConstructorAccessor139.newInstance(Unknown Source) sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) java.lang.reflect.Constructor.newInstance(Constructor.java:513) com.mysql.jdbc.Util.handleNewInstance(Util.java:411) com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1121) com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3670) com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3559) com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4110) com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2570) com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2731) com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2809) com.mysql.jdbc.ConnectionImpl.setAutoCommit(ConnectionImpl.java:5333) org.apache.commons.dbcp.DelegatingConnection.setAutoCommit(DelegatingConnection.java:331) org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.setAutoCommit(PoolingDataSource.java:317) org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:91) org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1463) org.springframework.orm.hibernate3.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:555) org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:371) org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:317) org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:105) org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202) $Proxy31.getTodosUsuariosList(Unknown Source) com.companyname.springapp.service.SimpleAnonimoManager.identificarse(SimpleAnonimoManager.java:21) com.companyname.springapp.web.IdentificarseFormController.onSubmit(IdentificarseFormController.java:40) sun.reflect.GeneratedMethodAccessor88.invoke(Unknown Source) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) java.lang.reflect.Method.invoke(Method.java:597) org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:174) org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:421) org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:409) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:771) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644) org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560) javax.servlet.http.HttpServlet.service(HttpServlet.java:641) javax.servlet.http.HttpServlet.service(HttpServlet.java:722) root cause java.io.EOFException: Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost. com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:3119) com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3570) com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3559) com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4110) com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2570) com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2731) com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2809) com.mysql.jdbc.ConnectionImpl.setAutoCommit(ConnectionImpl.java:5333) org.apache.commons.dbcp.DelegatingConnection.setAutoCommit(DelegatingConnection.java:331) org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.setAutoCommit(PoolingDataSource.java:317) org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:91) org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1463) org.springframework.orm.hibernate3.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:555) org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:371) org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:317) org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:105) org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202) $Proxy31.getTodosUsuariosList(Unknown Source) com.companyname.springapp.service.SimpleAnonimoManager.identificarse(SimpleAnonimoManager.java:21) com.companyname.springapp.web.IdentificarseFormController.onSubmit(IdentificarseFormController.java:40) sun.reflect.GeneratedMethodAccessor88.invoke(Unknown Source) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) java.lang.reflect.Method.invoke(Method.java:597) org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:174) org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:421) org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:409) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:771) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644) org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560) javax.servlet.http.HttpServlet.service(HttpServlet.java:641) javax.servlet.http.HttpServlet.service(HttpServlet.java:722) note The full stack trace of the root cause is available in the Apache Tomcat/7.0.32 logs. Apache Tomcat/7.0.32

It happens only in the first attempt. If I reload the page or I try to identify again, it runs correctly.

I search in the Internet a lot of possible solutions, I try some of them, but it doesn't run yet. Yesterday I try a solution that it seems correctly, and when I upload it, it works well, but today the error appeared again, so I don't know how I can do.

Those are my configuration files:

jdbc.properties

hibernate.generate_statistics = true hibernate.show_sql = true jdbc.driverClassName=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/database jdbc.username=user jdbc.password=pass hibernate.dialect=org.hibernate.dialect.MySQLDialect hibernate.format_sql=true hibernate.hbm2ddl.auto=update hibernate.current_session_context_class=thread

hibernate.cfg.xml

<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <mapping class="com.companyname.springapp.domain.Contrato" /> <mapping class="com.companyname.springapp.domain.ContratoDraftInicial" /> <mapping class="com.companyname.springapp.domain.Derecho" /> <mapping class="com.companyname.springapp.domain.Equipo" /> <mapping class="com.companyname.springapp.domain.EstadisticaEquipo" /> <mapping class="com.companyname.springapp.domain.EstadisticaJugador" /> <mapping class="com.companyname.springapp.domain.Jugador" /> <mapping class="com.companyname.springapp.domain.Usuario" /> </session-factory> </hibernate-configuration>

app-config.xml

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"> <property name="basename" value="messages"/> </bean> <!-- Scans the classpath of this application for @Components to deploy as beans --> <context:component-scan base-package="com.companyname.springapp.web" /> <!-- Configures the @Controller programming model --> <mvc:annotation-driven/> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property> <property name="prefix" value="/jsp/"></property> <property name="suffix" value=".jsp"></property> </bean> </beans>

applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <!-- holding properties for database connectivity /--> <context:property-placeholder location="classpath:jdbc.properties"/> <!-- enabling annotation driven configuration /--> <context:annotation-config/> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="${jdbc.driverClassName}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <property name="configLocation"> <value>classpath:hibernate.cfg.xml</value> </property> <property name="configurationClass"> <value>org.hibernate.cfg.AnnotationConfiguration</value> </property> </bean> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory"/> </bean> <tx:annotation-driven transaction-manager="transactionManager"/> <!-- Scans the classpath of this application for @Components to deploy as beans --> <context:component-scan base-package="com.companyname.springapp.repository" /> <context:component-scan base-package="com.companyname.springapp.service" /> </beans>

web.xml

<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <!-- <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring/applicationContext.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <display-name>Springapp</display-name> <servlet> <servlet-name>springapp</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring/app-config.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springapp</servlet-name> <url-pattern>*.htm</url-pattern> </servlet-mapping> </web-app>

To call the database, I do this (I put a example of class): EquipoDaoImp.java

@Repository(value = "equipoDao") public class EquipoDaoImp implements EquipoDao { private final SessionFactory sessionFactory; @Autowired public EquipoDaoImp(SessionFactory sessionFactory) { this.sessionFactory = sessionFactory; } @Override @Transactional(readOnly = true) public Integer getIdEquipo(String nombreUsuario) { return (Integer) this.sessionFactory.getCurrentSession() .createQuery("from Equipo e order by e.id") .uniqueResult(); } }

Any idea why it happens?

最满意答案

看起来,MySQL或防火墙正在关闭长时间闲置在jdbc连接池中的不活动连接:

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure The last packet successfully received from the server was 4,665,488 milliseconds ago.

检查MySQL上的wait_timeout的值。

你可以玩弄DBCP设置,例如validationQuery,testOnBorrow和testWhileIdle。

一种配置是'腰带和大括号',并可能以牺牲性能为代价来解决你的问题:

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="${jdbc.driverClassName}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> <property name="validationQuery" value="SELECT 1"/> <property name="testOnBorrow" value="true"/> </bean>

上述内容将在您每次从游泳池借用时测试连接。

It appears that MySQL or a firewall is killing off your inactive connections that are hanging around in your jdbc connection pool for long periods of time:

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure The last packet successfully received from the server was 4,665,488 milliseconds ago.

Check the value of wait_timeout on MySQL.

You can play around with DBCP settings e.g. validationQuery, testOnBorrow and testWhileIdle.

A a confuguration that is 'belt and braces', and will probably solve your problem at the expense of performance is:

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="${jdbc.driverClassName}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> <property name="validationQuery" value="SELECT 1"/> <property name="testOnBorrow" value="true"/> </bean>

The above will test connections every time you borrow from the pool.

更多推荐

本文发布于:2023-04-29 09:16:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1335911.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:首次   状态   HTTP

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!