tomcat启动时卡死,无法启动pagehelper插件

  • A+
所属分类:杂记

使用java应用链接mysql时,为了方便分页,有可能会使用到PageHelper插件,用于数据分页,而pagehelper插件在启动加载时会尝试链接数据库,如果连接数据库失败,在启动tomcat时,可能会出现了卡死到pagehelper的情况,查看catalina.out 日志,发现tomcat启动时卡死在如下图中的位置。

tomcat启动时卡死,无法启动pagehelper插件

为了方便搜索,将日志粘贴出来,tomcat启动时卡在如下标红位置。

DEBUG [2017-03-16 09:08:43,958]-[localhost-startStop-1] org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory:450 - Creating instance of bean 'com.github.pagehelper.PageHelper#56b133a7'

DEBUG [2017-03-16 09:08:43,982]-[localhost-startStop-1] org.springframework.beans.factory.support.AbstractBeanFactory:248 - Returning cached instance of singleton bean 'org.springframework.transaction.config.internalTransactionAdvisor'

DEBUG [2017-03-16 09:08:43,989]-[localhost-startStop-1] org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory:478 - Finished creating instance of bean 'com.github.pagehelper.PageHelper#56b133a7'

DEBUG [2017-03-16 09:08:43,992]-[localhost-startStop-1] org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory:1616 - Invoking afterPropertiesSet() on bean with name 'common_platform_sqlSessionFactory'

DEBUG [2017-03-16 09:08:43,994]-[localhost-startStop-1] org.mybatis.spring.SqlSessionFactoryBean:317 - Property 'configLocation' not specified, using default MyBatis Configuration

DEBUG [2017-03-16 09:08:44,069]-[localhost-startStop-1] org.mybatis.spring.SqlSessionFactoryBean:347 - Registered plugin: 'com.github.pagehelper.PageHelper@561d060d'

 

在网络上,大多数造成上述情况的原因是因为使用spring时未正确配置persistence-context.xml,而我们的情况却不是这样的,因为在一开始时,我们的配置文件是可以正常使用的,pagehelper也是可以正常被加载的,在配置文件完全没有被更改的情况下,出现了无法再启动tomcat时加载pagehelper的情况,所以问题的根源并不在spring的配置上。

 

那么应该是无法连接到数据库造成的,但是,不管是通过mysql客户端命令,还是通过其他客户端,均可连接到对应的mysql服务中,证明mysql服务是正常启动的。

 

那么是为什么,tomcat也没有其他明确的日志信息,于是开始查找mysql的日志,希望可以发现蛛丝马迹,查看mysql错误日志,发现如下信息。

tomcat启动时卡死,无法启动pagehelper插件

170315 18:05:25 [Warning] IP address 'XXX.XXX.XXX.XXX' could not be resolved: Name or service not known

看到这里你肯定想明白了,出现上述信息是因为mysql尝试对连接的客户端的IP进行DNS解析,而当我们启动tomcat时,mysql可能无法解析tomcat所在服务器的IP地址(即使tomcat与mysql服务在同一台机器上,即使配置了hosts文件)

 

那么聪明如你一定想到了解决方案,没错,只要不让mysql尝试解析IP即可,只要在my.cnf配置文件中的mysqld配置段中加入skip_name_resolve=ON参数即可,但是注意,如果你使用的是mysql5.1的版本,加入skip_name_resolve即可,不要使用" skip_name_resolve=ON",如下图所示,配置完成后,重启mysql服务即可。

tomcat启动时卡死,无法启动pagehelper插件

 

再次启动tomcat,已经能够顺利的启动了。

 

我们为了节省开销或者快速链接mysql,往往会开启skip_name_resolve,但是因为是测试机,并没有这样配置,于是遇到了这样的问题,如果你的情况跟我一样,希望这篇文章可以顺利帮到你。

weinxin
我的微信公众号
关注"实用运维笔记"微信公众号,当博客中有新文章时,可第一时间得知哦~
朱双印

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: