【SSH异常系列】关于SSH中连接数溢出问题的解决方法

最近在项目中遇到一些奇葩的问题:在页面刷新多次后就报错了,报错原因是数据库的连接数太多。最后的原因分析如下:

1、在每次拿bean的时候都重新的new了一个新的容器对象。

ApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml");

这句话即使重新new一次AppliactionContext对象,然而在每次new的时候都会重新的去解读beans.xml中的配置信息,包括重新建立一个新的数据源连接对象。

所以这样在每次拿bean容器的时候很快就new出了很多的连接,当这些连接数足够多的时候就报错了:Too Many Connections

2、解决方法:使用IOC思想,直接配置bean.xml,将需要的bean容器对象直接注入到所要用到的bean中,例如:

<bean id="departmentDao" class="cn.dao.departmentDao.impl.DepartmentDaoImpl"/>
	<bean id="departmentService" class="cn.service.deparmentservice.impl.DepartmentServiceImpl">
	    <property name="departmentDao" ref="departmentDao"></property>
	</bean>
	<bean id="departmentAction" class="cn.action.department.DepartmentAction">
	    <property name="departmentService" ref="departmentService"></property>
	    <property name="positionService" ref="positionService"></property>
	</bean>

这样的好处是:使用了Spring为我们提供的IOC思想,减少了实例化对象的过程。

3、直接new bean容器和注入的区别

经过本人观察,直接new ApplicationContext对象时的耗时是比较长的,多次new对象则耗费更多的时间,这体现在页面刷新更慢,而是用注入则只是Spring帮我们初始化了一次,使得后面的操作不需要重新new ApplicationContext对象,这样就减少了响应时间。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-29 23:23:59

【SSH异常系列】关于SSH中连接数溢出问题的解决方法的相关文章

Java虚拟机系列(三)---内存溢出情况及解决方法

因为Java虚拟机内存有堆内存.方法区.虚拟机栈.本地方法栈和程序计数器五部分组成,其中程序计数器是唯一一块不会发生内存溢出异常的内存区,所以只有四类内存区可能发生内存溢出异常,其中虚拟机栈和本地方法栈都是Java方法执行的内存模型,所以它们的异常发生情况几乎相同,另外,在方法区中.又有一块内存是常量池,所以内存溢出的情况可分为Java堆溢出.虚拟机栈和本地方法栈溢出.方法区和运行时常量池溢三种情况. 一.Java堆溢出 1.产生的原因:因为堆中存放的是对象实例和数组,所以当对象数量>最大堆容量

LAMP系列之PHP编译过程中常见错误信息的解决方法

LAMP系列之PHP编译过程中常见错误信息的解决方法 在CentOS编译PHP5的时候有时会遇到以下的一些错误信息,基本上都可以通过yum安装相应的库来解决.以下是具体的一些解决办法: ******************************************************************************* checking for BZip2 support- yes checking  for BZip2 in default path- not foun

Windows10 下 github ssh 访问出现 Permission denied(publickey)错误的解决方法

Windows10 下 github ssh 访问出现 Permission denied(publickey)错误的解决方法. 错误信息: git clone [email protected]:ediwang/envsetup.git Cloning into 'envsetup'... [email protected]: Permission denied (publickey). fatal: Could not read from remote repository. Please

红外遥控库IRremote的IRsend类sendRaw函数溢出问题及其解决方法

最近在调试红外遥控格力空调,在论坛中学到了不少东西.参考: (1)<解决问题系列(4)--红外编码分析利器使用> (2)<315Mhz模块传输替代315Mhz遥控器> 调试环境: 软件:Arduino IDE 1.0 硬件:Arduino uno r3 问题分> 我使用的遥控器型号是YAD0F. 在使用逻辑分析仪dump出原始码之后,使用sendRaw函数来发送原始码,发现空调没有反应.原始码如下: 9004,4499,699,1609,697,511,695,511,695

[Unity3D]引擎崩溃、异常、警告、BUG与提示总结及解决方法

1.U3D经常莫名奇妙崩溃.   一般是由于空异常造成的,多多检查自己的引用是否空指针. 2.编码切换警告提示.   警告提示:Some are Mac OS X (UNIX) and some are Windows. This might lead to incorrect line numbers in stacktraces and compiler errors. Many text editors can fix this using Convert Line Endings men

Android实际开发中的bug总结与解决方法(一)

                                                                             Android实际开发中的bug总结与解决方法(一) Android开发中有很多bug,我们是完全可以在线下避免的,不要等到线上报的BUG的再去修复.下面是我在实际开发中遇到过的bug和解决方法. BUG 1: java.lang.RuntimeException: Unable to start activity ComponentInfo

MySQL连接数超过限制的解决方法

最近网站出现 User 数据库名称 has already more than 'max_user_connections' active connections 的报错,网站瘫痪.有必要研究下这个问题. max_user_connections 是 MySQL 用户连接数的最大值设置,整段语句的意思是:服务器的 MySQL 的最大连接数参数设置不足.解决方法:修改 MySQL 安装目录下 my.ini 或者 my.cnf 文件内的 max_user_connections 参数的数值,重启 M

Io 异常: The Network Adapter could not establish the connection 解决方法

Io 异常: The Network Adapter could not establish the connection 解决方法 1.IP错误:在设置URL时错误,例如:jdbc:oracle:thin:@192.168.1.80:1521:orcl数据库服务器是否正确:ping 服务器IP是否通畅.ping不通则将URL更改正确.端口号是否正确.进行一下操作:在DOS上键入sqlplus,检查oracle是否开启一切正常则执行下面第2步. 2.防火墙如果机器上安装有放火墙,可能是服务器端口

移动端网页布局中需要注意事项以及解决方法总结

移动端网页布局中需要注意事项以及解决方法总结,这份对我们在布局移动端网页的时候非常有用! winphone系统a.input标签被点击时产生的半透明灰色背景怎么去掉<meta name="msapplication-tap-highlight" content="no">1.关闭iOS键盘首字母自动大写<input type="text" autocapitalize="off" />2.禁止文本缩放h