web项目不知道从什么时候开始启动会几率失败, 导致一整天可能只有三四个小时能正常开发
报错提示: sessionFactory 初始化失败, 往下找原因, 有报错提示Connection close 或者 Connection resert.
打开fiddler配置JVM虚拟机启动参数, 开启代理, 使用 fiddler 抓取项目启动的所有请求动作.
-DproxySet=true
-DproxyHost=127.0.0.1
-DproxyPort=8888
发现有4个请求动作, 都是访问 www.hibernate.org 请求 URL dtd/hibernate-mapping-3.0.dtd
全局搜索 dtd/hibernate-mapping-3.0.dtd 发现是一个 .hbm.xml 的文件头, 是 hibernate 的映射类, 项目中有上百个映射类, 只能搜出来这一个, 说明这一个头和别的文件头不一样, 并且项目启动时只有这个地址有四次请求, 其他文件的头中的URL应该在hibernate的jar包中被消化掉了
有问题的头
http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd
其他文件的头
http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd
ping www.hibernate.org 时, 四次请求只有一次能成功, 这就是为什么项目能不能启动就看脸的问题
本地 hibernate jar包中存在 hibernate-mapping-3.0.dtd 这个文件, 直接替换掉有问题的头即可
问题解决