MyBatis發佈到內網服務器上後的UnKnownHostException問題

  最近把使用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配置文件了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章