MyBatis发布到内网服务器上后的UnKnownHostException问题

来源:互联网 发布:野蛮时代 知乎 编辑:程序博客网 时间:2024/04/29 16:18

  最近把使用MyBatis的java应用发到服务器上后,发现了异常,这个异常在本地的机器上是没有的。最终查明原因是内网服务器没法连接外网导致的。

  MyBatis需要联网的地方在XML配置文件中的第一个节点的这句 http://mybatis.org/dtd/mybatis-3-config.dtd,以及如果使用了mapper文件的

http://mybatis.org/dtd/mybatis-3-mapper.dtd,内网机器无法连接http://mybatis.org,所以无法获得XML中节点的定义,导致报错。

解决办法很简单:要不然让内网机器可以访问http://mybatis.org,否则就要把这两个dtd先下载到本地再上传服务器。然后修改引用的地址

为你dtd的地址。

  一般改完也就没问题了。但是我在这里又遇到一个奇怪的问题,http://mybatis.org/dtd/mybatis-3-config.dtd这个配置文件修改完可以正常

运行,然而几个Mapper的XML配置文件依然报错。后来发现,原来是打包时,maven吧config也打包进了jar,而为了方便修改配置,我们的

config是单独出来放在一个文件夹的,我们在读MyBatis的数据库连接配置时,是在代码中做了处理,而mapper配置文件的位置是这么指定的:

<mapper resourse="xxx"/> 这里用了resource,就表示要在当前运行类的resource路径下找,相当于类中的Class.GetResource()方法获得的路径,

我们改的是外面的config文件,而eclipse又把旧的config文件打包进jar包,结果导致读到了还是旧的文件。

  所以,如果大家的mapper要读jar外部的文件,可以使用url属性:

<mapper url="file///:xxx"/>这样就能读取你指定的url路径的Mapper配置文件了。

0 0