今天在修改wuser数据库连接配置文件user.proxool.xml之后重启服务,发现访问接口均报错。
[访问user.getTgUser报错:NoSuchElementException]
[访问user.getUser报错:NullPointerException]
分别找到对应报错行,均为访问数据库的一行
【getUser,NoPointerException,Line:39】
【getTgUser,NoSuchElementException,Line:41】
分析两个接口的不同之处,一个有别名,报NoSuchElementException,另一个没有别名,报NoPointerException,因此猜测是数据库连接池有问题。
从报错内容中也可以得到印证。
于是翻出源码,找到这一行
回头看初始化日志,并没有加载数据库配置文件的部分。因此估计是user.proxool.xml没有加载导致。
于是将服务器中的user.proxool.xml移到本地,并将服务器上面该文件删除。
重启服务,再次访问。
果然结果和之前一样。因此确定是此配置文件没有被加载导致。那么为什么没被加载呢?
首先查看是不是XML有问题。
看名字,没问题。
用文本编辑器打开,看别名、配置...
都没问题。。。
咦,这是什么?
UTF-8-BOM格式
想起之前同事跟我说过,BOM格式就是第一行前面有一串隐藏的字符,用于表示字符集。
百度一下:
心中小鹿乱撞了,感觉就是这个原因导致的XML加载失败,于是赶紧改了字符集变为无BOM格式,上传,重启。
看到页面上打印的密密麻麻,怎么就那么兴奋呢?