[问题分析] mybatis dtd文件导致测试环境无法启动
2020-03-05 本文已影响0人
程序员小鬼
1.最近项目比较紧张,同一个工程修改的人越来越多,大家都开始搭建自己的测试环境,我负责的一个sprigboot工程,同事怎么都无法部署成功。报错提示如图

从报错信息来看,应该是一个问题导致了bean初始化失败。
channelMappedDao<-sqlSessionWrite<-sqlSessionFactoryWriter<-datasource-context.xml<-channelMappedMapper.xml
原因:nested exception is org.apache.ibatis.builder.BuilderException: Error creating document instance. Cause: java.net.SocketException: Network is unreachable (connect failed)
从这个结果分析是网络无法连接导致创建文档实例失败。至于为什么需要创建文档实例,后面再仔细研究一下mybatis原理
好奇为什么一个mapping配置文件会因为网络无法连接初始化出错,发现确实有一个http的url链接

2.基于以上分析,于是看看两个服务器有什么区别
wget http://mybatis.org/dtd/mybatis-3-mapper.dtd
能正常启动的服务器 可以正常下载

无法启动的服务器 连接超时

基本已经定位到问题原因,就是同事的服务器没有连接外网。
从网上找了一下,有类似问题的解决方案,下载mybatis-3-config.dtd,放到项目中,用相对路径
```
<?xml version="1.0" encoding="UTF-8" ?>
"./mybatis-3-config.dtd">
```
3.很奇怪mybatis使用范围这么广不应该只能用这种方式处理,于是对比mybaits的版本,项目使用的是其他团队二次开发的jar
于是又开始了一组对比试验
试验机器|试验项目|结果