我一直在与hibernate没有将连接释放回池中的问题进行斗争。即使在开始时它仍然泄漏。也许一个新的视角会有所帮助。有谁能发现问题?
的applicationContext.xml
<context:component-scan base-package="dk.eazyit.halalguide.controller"/>
<context:component-scan base-package="dk.eazyit.halalguide.handler"/>
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- max upload size in bytes -->
<property name="maxUploadSize" value="20971520" /> <!-- 20MB -->
</bean>
<mvc:annotation-driven/>
弹簧servlet.xml中
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
的web.xml
09-Feb-2016 20:18:55.882 INFO [RMI TCP Connection(2)-127.0.0.1] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
.20:18:56.059 [RMI TCP Connection(2)-127.0.0.1] INFO o.s.web.context.ContextLoader - Root WebApplicationContext: initialization started
.20:18:56.133 [RMI TCP Connection(2)-127.0.0.1] INFO o.s.w.c.s.XmlWebApplicationContext - Refreshing Root WebApplicationContext: startup date [Tue Feb 09 20:18:56 CET 2016]; root of context hierarchy
.20:18:56.166 [RMI TCP Connection(2)-127.0.0.1] INFO o.s.b.f.xml.XmlBeanDefinitionReader - Loading XML bean definitions from ServletContext resource [/WEB-INF/applicationContext.xml]
.20:18:56.452 [RMI TCP Connection(2)-127.0.0.1] INFO o.s.c.s.PropertySourcesPlaceholderConfigurer - Loading properties file from class path resource [application.properties]
.20:18:56.876 [RMI TCP Connection(2)-127.0.0.1] INFO o.s.s.c.ThreadPoolTaskExecutor - Initializing ExecutorService
09-Feb-2016 20:18:56.919 INFO [RMI TCP Connection(2)-127.0.0.1] com.mchange.v2.log.MLog.<clinit> MLog clients using java 1.4+ standard logging.
09-Feb-2016 20:18:56.940 INFO [RMI TCP Connection(2)-127.0.0.1] com.mchange.v2.c3p0.C3P0Registry.banner Initializing c3p0-0.9.1.2 [built 21-May-2007 15:04:56; debug? true; trace: 10]
.20:18:57.024 [RMI TCP Connection(2)-127.0.0.1] INFO o.s.o.j.LocalContainerEntityManagerFactoryBean - Building JPA container EntityManagerFactory for persistence unit 'default'
.20:18:57.044 [RMI TCP Connection(2)-127.0.0.1] INFO o.h.jpa.internal.util.LogHelper - HHH000204: Processing PersistenceUnitInfo [
name: default
...]
.20:18:57.137 [RMI TCP Connection(2)-127.0.0.1] INFO org.hibernate.Version - HHH000412: Hibernate Core {5.0.7.Final}
.20:18:57.139 [RMI TCP Connection(2)-127.0.0.1] INFO org.hibernate.cfg.Environment - HHH000206: hibernate.properties not found
.20:18:57.140 [RMI TCP Connection(2)-127.0.0.1] INFO org.hibernate.cfg.Environment - HHH000021: Bytecode provider name : javassist
.20:18:57.191 [RMI TCP Connection(2)-127.0.0.1] INFO o.h.annotations.common.Version - HCANN000001: Hibernate Commons Annotations {5.0.1.Final}
.20:18:57.332 [RMI TCP Connection(2)-127.0.0.1] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL5Dialect
.20:18:57.354 [RMI TCP Connection(2)-127.0.0.1] INFO o.h.e.j.e.i.LobCreatorBuilderImpl - HHH000422: Disabling contextual LOB creation as connection was null
.20:18:57.894 [RMI TCP Connection(2)-127.0.0.1] INFO o.h.tool.hbm2ddl.SchemaUpdate - HHH000228: Running hbm2ddl schema update
09-Feb-2016 20:18:57.945 INFO [RMI TCP Connection(2)-127.0.0.1] com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.getPoolManager Initializing c3p0 pool... com.mchange.v2.c3p0.ComboPooledDataSource [ acquireIncrement -> 1, acquireRetryAttempts -> 30, acquireRetryDelay -> 1000, autoCommitOnClose -> false, automaticTestTable -> null, breakAfterAcquireFailure -> false, checkoutTimeout -> 0, connectionCustomizerClassName -> null, connectionTesterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTester, dataSourceName -> 1hge13v9e1jch21x1042dj3|1c5c5ab6, debugUnreturnedConnectionStackTraces -> true, description -> null, driverClass -> com.mysql.jdbc.Driver, factoryClassLocation -> null, forceIgnoreUnresolvedTransactions -> false, identityToken -> 1hge13v9e1jch21x1042dj3|1c5c5ab6, idleConnectionTestPeriod -> 3000, initialPoolSize -> 3, jdbcUrl -> jdbc:mysql://localhost:3306/halalguidedb?autoReconnect=true&useSSL=false, maxAdministrativeTaskTime -> 0, maxConnectionAge -> 0, maxIdleTime -> 0, maxIdleTimeExcessConnections -> 0, maxPoolSize -> 20, maxStatements -> 50, maxStatementsPerConnection -> 0, minPoolSize -> 5, numHelperThreads -> 3, numThreadsAwaitingCheckoutDefaultUser -> 0, preferredTestQuery -> null, properties -> {user=******, password=******}, propertyCycle -> 0, testConnectionOnCheckin -> false, testConnectionOnCheckout -> false, unreturnedConnectionTimeout -> 30, usesTraditionalReflectiveProxies -> false ]
.20:18:58.666 [RMI TCP Connection(2)-127.0.0.1] INFO o.s.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 2605 ms
.20:18:58.683 [RMI TCP Connection(2)-127.0.0.1] INFO o.s.web.servlet.DispatcherServlet - FrameworkServlet 'spring': initialization started
.20:18:58.687 [RMI TCP Connection(2)-127.0.0.1] INFO o.s.w.c.s.XmlWebApplicationContext - Refreshing WebApplicationContext for namespace 'spring-servlet': startup date [Tue Feb 09 20:18:58 CET 2016]; parent: Root WebApplicationContext
.20:18:58.688 [RMI TCP Connection(2)-127.0.0.1] INFO o.s.b.f.xml.XmlBeanDefinitionReader - Loading XML bean definitions from ServletContext resource [/WEB-INF/spring-servlet.xml]
.20:18:58.979 [RMI TCP Connection(2)-127.0.0.1] INFO o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped "{[/location/{id}],methods=[GET],produces=[application/json]}" onto public org.springframework.http.ResponseEntity<dk.eazyit.halalguide.domain.Location> dk.eazyit.halalguide.controller.LocationController.getLocation(long)
.20:18:58.980 [RMI TCP Connection(2)-127.0.0.1] INFO o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped "{[/location],methods=[POST],consumes=[multipart/mixed],produces=[application/json]}" onto public org.springframework.http.ResponseEntity<java.lang.Void> dk.eazyit.halalguide.controller.LocationController.putLocation(dk.eazyit.halalguide.domain.Location,org.springframework.web.multipart.MultipartFile[],org.springframework.web.util.UriComponentsBuilder)
.20:18:58.981 [RMI TCP Connection(2)-127.0.0.1] INFO o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped "{[/message/{id}],methods=[GET],produces=[application/json]}" onto public org.springframework.http.ResponseEntity<dk.eazyit.halalguide.domain.Message> dk.eazyit.halalguide.controller.MessageController.getMessage(long)
.20:18:58.981 [RMI TCP Connection(2)-127.0.0.1] INFO o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped "{[/message],methods=[POST]}" onto public org.springframework.http.ResponseEntity<java.lang.Void> dk.eazyit.halalguide.controller.MessageController.putMessage(dk.eazyit.halalguide.domain.Message,org.springframework.web.multipart.MultipartFile,org.springframework.web.util.UriComponentsBuilder)
.20:18:58.982 [RMI TCP Connection(2)-127.0.0.1] INFO o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped "{[/picture/{id}],methods=[GET],produces=[application/json]}" onto public org.springframework.http.ResponseEntity<dk.eazyit.halalguide.domain.Picture> dk.eazyit.halalguide.controller.PictureController.getPicture(long)
.20:18:58.983 [RMI TCP Connection(2)-127.0.0.1] INFO o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped "{[/picture],methods=[POST]}" onto public org.springframework.http.ResponseEntity<java.lang.Void> dk.eazyit.halalguide.controller.PictureController.putPicture(dk.eazyit.halalguide.domain.Location,dk.eazyit.halalguide.domain.Review,org.springframework.web.multipart.MultipartFile[])
.20:18:58.984 [RMI TCP Connection(2)-127.0.0.1] INFO o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped "{[/review/{id}],methods=[GET],produces=[application/json]}" onto public org.springframework.http.ResponseEntity<dk.eazyit.halalguide.domain.Review> dk.eazyit.halalguide.controller.ReviewController.getReview(long)
.20:18:58.985 [RMI TCP Connection(2)-127.0.0.1] INFO o.s.w.s.m.m.a.RequestMappingHandlerMapping - Mapped "{[/review],methods=[POST]}" onto public org.springframework.http.ResponseEntity<java.lang.Void> dk.eazyit.halalguide.controller.ReviewController.putReview(dk.eazyit.halalguide.domain.Review,org.springframework.web.multipart.MultipartFile[],org.springframework.web.util.UriComponentsBuilder)
.20:18:59.102 [RMI TCP Connection(2)-127.0.0.1] INFO o.s.w.s.m.m.a.RequestMappingHandlerAdapter - Looking for @ControllerAdvice: WebApplicationContext for namespace 'spring-servlet': startup date [Tue Feb 09 20:18:58 CET 2016]; parent: Root WebApplicationContext
.20:18:59.150 [RMI TCP Connection(2)-127.0.0.1] INFO o.s.w.s.m.m.a.RequestMappingHandlerAdapter - Looking for @ControllerAdvice: WebApplicationContext for namespace 'spring-servlet': startup date [Tue Feb 09 20:18:58 CET 2016]; parent: Root WebApplicationContext
.20:18:59.175 [RMI TCP Connection(2)-127.0.0.1] INFO o.s.w.s.m.m.a.ExceptionHandlerExceptionResolver - Detected @ExceptionHandler methods in globalDefaultExceptionHandler
.20:18:59.245 [RMI TCP Connection(2)-127.0.0.1] INFO o.s.web.servlet.DispatcherServlet - FrameworkServlet 'spring': initialization completed in 562 ms
[2016-02-09 08:18:59,266] Artifact halalguide-backend:war: Artifact is deployed successfully
09-Feb-2016 20:19:03.543 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /usr/local/apache-tomcat-8.0.30/webapps/manager
09-Feb-2016 20:19:03.567 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /usr/local/apache-tomcat-8.0.30/webapps/manager has finished in 25 ms
09-Feb-2016 20:19:35.450 INFO [Timer-0] com.mchange.v2.resourcepool.BasicResourcePool.removeResource A checked-out resource is overdue, and will be destroyed: com.mchange.v2.c3p0.impl.NewPooledConnection@4bc94117
09-Feb-2016 20:19:35.450 INFO [Timer-0] com.mchange.v2.resourcepool.BasicResourcePool.removeResource Logging the stack trace by which the overdue resource was checked-out.
java.lang.Exception: DEBUG ONLY: Overdue resource check-out stack trace.
at com.mchange.v2.resourcepool.BasicResourcePool.checkoutResource(BasicResourcePool.java:506)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:525)
at com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.getConnection(AbstractPoolBackedDataSource.java:128)
at org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.java:122)
at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess.obtainConnection(JdbcEnvironmentInitiator.java:180)
at org.hibernate.tool.schema.extract.internal.ExtractionContextImpl.getJdbcConnection(ExtractionContextImpl.java:62)
at org.hibernate.tool.schema.extract.internal.ExtractionContextImpl.getJdbcDatabaseMetaData(ExtractionContextImpl.java:75)
at org.hibernate.tool.schema.extract.internal.InformationExtractorJdbcDatabaseMetaDataImpl.getTable(InformationExtractorJdbcDatabaseMetaDataImpl.java:271)
at org.hibernate.tool.schema.extract.internal.DatabaseInformationImpl.getTableInformation(DatabaseInformationImpl.java:105)
at org.hibernate.tool.schema.internal.SchemaMigratorImpl.doMigrationToTargets(SchemaMigratorImpl.java:162)
at org.hibernate.tool.schema.internal.SchemaMigratorImpl.doMigration(SchemaMigratorImpl.java:60)
at org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:133)
at org.hibernate.tool.hbm2ddl.SchemaUpdate.execute(SchemaUpdate.java:101)
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:470)
at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:444)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:879)
at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:60)
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:343)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:318)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1637)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1574)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:545)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1054)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:829)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:538)
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:446)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:328)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:107)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4812)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5255)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717)
at org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1675)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:300)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:465)
at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:415)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:300)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1487)
at javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:97)
at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1328)
at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1420)
at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:848)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:322)
at sun.rmi.transport.Transport$1.run(Transport.java:177)
at sun.rmi.transport.Transport$1.run(Transport.java:174)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:173)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:556)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:811)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:670)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
日志
<java.version>1.7</java.version>
<spring.version>4.2.4.RELEASE</spring.version>
<spring.data.version>1.9.2.RELEASE</spring.data.version>
<spring.cloud.version>1.0.4.RELEASE</spring.cloud.version>
<servletapi.version>3.1.0</servletapi.version>
<javax.servlet.version>2.5</javax.servlet.version>
<mysql.version>5.1.38</mysql.version>
<hibernate.version>5.0.7.Final</hibernate.version>
<hibernate.jpa.version>1.0.1.Final</hibernate.jpa.version>
<mysql.version>5.1.38</mysql.version>
<c3p0.version>0.9.1.2</c3p0.version>
<javax.persistence.version>1.0.2</javax.persistence.version>
<logback.version>1.1.3</logback.version>
<jcloverslf4j.version>1.7.14</jcloverslf4j.version>
<commons-fileupload.version>1.3.1</commons-fileupload.version>
<commons-io.version>2.4</commons-io.version>
<jackson.version>2.7.1-1</jackson.version>
版本
summarize(derivative(summarize(my.metric, "30s")), "$window")