最近发现一个问题,我们设置了一个定时任务,用于每天的对账,每天的对账都是启动一个java程序(jar包),时间久了,出现下面的问题:
有很多CardPaymentBatch.jar进程驻留在系统当中,随之出现的问题:
数据库连接不上。当时百思不得其解,不知道什么原因,所有尝试关掉几个进程,数据库就可以连接了。
今天特地搜了一下,网上有人回答了:
在非Web应用中,手工加载Spring IoC容器,不能用ApplicationContext,要用AbstractApplicationContext。用完以后要记得调用ctx.close()关闭容器。如果不记得关闭容器,最典型的问题就是数据库连接不能释放。
所以显而易见,跑完对账应该关闭容器。