To prevent a momery leak

据说分布式向来是鬼影重重,留神不留神都能碰到鬼,今天就碰到一只难缠的。

启动报错:org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesJdbc The web application [service] registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.

 

 

事情起因:分布式,上午运行的好好的,没有一点异样。看日志也只是个警告而已。但是程序运行不起来。据说是内存泄漏,在tomcat的server.xml关闭内存泄漏监听<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />,结果毫无作用。

往深了找,度娘上找,说是数据源莫名关闭。于是各种druid怀疑。

配置修改了500遍还是没觉得有问题,2个小时过去了。

还有人说数据库连接数太多导致spring不释放连接。然后我关掉数据库,maven clear无数次,无效!!!重启电脑,这次该释放连接了吧(本地数据库),无效!!!!!

没法子了,只好一点点还原上午的程序,索性也没改多少。把原来LoginController文件中查询菜单的部分业务处理的代码又从MenuServiceImpl中还原到LoginController中,奇迹出现了,妈的居然好了。心中一万个草拟吗崩腾而过。分布式的坑这么多?

耐着性子慢慢找原因,按理说不可能是分布式的关系。逻辑处理不能写在业务层,这还搞个鸡毛分布式啊。分布式有三层(鉴于业务前期简单,只分三层):api(用来存放公共组件),controller层(服务消费者),service层(服务提供者)。

如果在service层中不能处理业务逻辑,是不是可能配置不正确,没有扫描到包,或者扫描的bean包范围太小,于是将原来的

Context:component-scan  base-package=”com.ywyt.*;com.ywyt.service.impl/>

改为:context:component-scan  base-package=”com.ywyt.service.*”,然后将业务逻辑处理放到service.imple中去,结果就好了。WTF!!

 

后记:自以为找到了问题的答案,又学了一招。结果…..结果第二天来,将配置改为第一天的扫描包和aop配置

结果还是可以运行。Double WTF!!!!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值