SAXParseException: Content is not allowed in prolog

项目的服务器是jboss,启动的时候因为日志兼容问题,所以每次启动都会报错的,所以以至于出现其他错误都不一定能及时发现。今天生产发布时就遇见了这样的问题,花费的时间还是有点长,结果还好,定位到了问题,并解决了问题。

问题:

项目内容定义的开源连接池配在了一个xml里面,服务启动后,其他页面正常,只要一使用该连接池,就提示类似于这样的信息:Attempt to refer to a unregistered pool by its alias

一看错误信息,就知道是因为连接池没有初始化,也就是没有注册。

于是查看连接池注册的位置,最终是web.xml配置了连接池的配置文件,调用者是一个servlet。难道是因为servlet的启动顺序?于是配置了load-on-start的标签,配置了0,设置最大的优先级,结果问题依旧。

无奈啊,但是根据问题的描述,知道连接池没有初始化。莫非启动报错?于是查看了其他servlet的打印信息,因为觉得这些servlet会一块初始化。

在后台view  log文件,然后/start init...  ,my god,找到了以前没有见过的错误的信息,意识转换连接池的xml文件报错,
SAXParseException: Content is not allowed in prolog。。。。。

但是测试环境是ok的,莫非因为字符问题?

于是 diff 有问题的xml文件  正常的xml文件

果然,有问题的xml文件出现了乱码,奶奶的,想骂人,坑人的环境问题

替换文件后,一切ok。


总结: 遇到问题并不可怕,关键是要学会分析,根据问题的描述,准确地判断大概是什么问题,然后随着分析,找出具体的可能的解决方案。

猜你喜欢

转载自zengshaotao.iteye.com/blog/2165650