u
问题的起源在于:
javax.servlet.ServletException: Error creating bean with name 'sessionFactory' defined in class path resource [applicationContext.xml]: Initialization of bean failed; nested exception is java.lang.OutOfMemoryError: Java heap space
出现此原因:网上的分析是使用Java程序从数据库中查询大量的数据时出现异常。
解决方法:1)
windows 更改系统环境变量 加上JAVA_OPTS=-Xms64m -Xmx512m Linux 在{tomcat_home}/bin/catalina.sh的前面,加 set JAVA_OPTS='-Xms64 -Xmx512' |
问题2:sleep连接不释放,占资源。
分析其原因与其解决方法。
用MySQL Administrator工具查看健康度,mysql的sleep连接数达到mysql的最大连接数。连接使用率达到100%。从而其它的连接无法得到,程序出现崩溃。
javax.servlet.ServletException: Hibernate operation: Cannot open connection; uncategorized SQLException for SQL [???]; SQL state [null]; error code [0]; Connections could not be acquired from the underlying database!; nested exception is java.sql.SQLException: Connections could not be acquired from the underlying database
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>classpath:jdbc.properties</value>
</property>
</bean>
< property name ="driverClass" value ="com.mysql.jdbc.Driver" />
< property name ="jdbcUrl" value ="${jdbc.url}" />
< property name ="user" value ="${jdbc.username}" />
< property name ="password" value ="${jdbc.password}" />
< property name ="autoCommitOnClose" value ="true" />
< property name ="checkoutTimeout" value ="${cpool.checkoutTimeout}" />
< property name ="initialPoolSize" value ="${cpool.minPoolSize}" />
< property name ="minPoolSize" value ="${cpool.minPoolSize}" />
< property name ="maxPoolSize" value ="${cpool.maxPoolSize}" />
< property name ="maxIdleTime" value ="${cpool.maxIdleTime}" />
< property name ="acquireIncrement" value ="${cpool.acquireIncrement}" />
< property name ="maxIdleTimeExcessConnections" value ="${cpool.maxIdleTimeExcessConnections}" />
</ bean >
-->
<!-- sessionFactory -->
< bean id ="sessionFactory"
class ="org.springframework.orm.hibernate3.LocalSessionFactoryBean" >
< property name ="dataSource" >
< ref bean ="dataSource" />
</ property >
< property name ="mappingResources" >
< list >
< value > com/voff/pojo/User.hbm.xml </ value>
< value > com/voff/pojo/Blog.hbm.xml </ value >
< value > com/voff/pojo/Category.hbm.xml </ value >
</ list >
</ property >
< property name ="hibernateProperties" >
< props >
< prop key ="hibernate.dialect" >
org.hibernate.dialect.MySQLDialect
</ prop >
< prop key ="hibernate.show_sql" >
true
</ prop >
< prop key ="hibernate.connection.provider_class" > org.hibernate.connection.C3P0ConnectionProvider </ prop >
</ props >
</ property >
</ bean >
另一配置:
jdbc.url = jdbc:mysql://localhost/spring?useUnicode = true& ; characterEncoding=UTF-8
# Database login information
jdbc.username = root
jdbc.password =
# Time to wait for an open connection before timing out
# (in milliseconds)
cpool.checkoutTimeout = 5000
# Connection pool size
cpool.minPoolSize = 5
cpool.maxPoolSize = 20
# How long to keep unused connections around(in seconds)
# Note: MySQL times out idle connections after 8 hours( 28 , 800 seconds)
# so ensure this value is below MySQL idle timeout
cpool.maxIdleTime = 25200
# How long to hang on to excess unused connections after traffic spike
# (in seconds)
cpool.maxIdleTimeExcessConnections = 1800
# Acquiring new connections is slow , so eagerly retrieve extra connections
# when current pool size is reached
cpool.acquireIncrement = 5