这个问题已经折腾两天了,晚上又花了4个小时搞了一通,终于。。。决定去请教大神(哎,大神就是好用)
先将问题再现,并记录解决问题的过程
1. 问题是微信的token验证可以通过(doGet),但是用户消息无法响应(doPost)。
2. SAE上不知道如何调试,经过大神的一番捣鼓,终于找到了查找SAE日志的地方(刚开始用了最原始的办法:System.out.println())
不得不抱怨一下这日志种类分的太细,挨个找了一下,才找到我要的
3. 错误信息如下(终于找到了):
4. 问题的解释找到了(包冲突了)
还要在抱怨一下,说好的打印stack trace,然并卵。不过还好错误信息够我问度娘的了!
只简单地找度娘问了一下Exception was: org.xml.sax.SAXException: Can't create default XMLReader; is system property org.xml.sax.driver set?
就找到了解释(网上大神也真多)
java 系统之中使用的是JDom,Xerces解析器解析XML。在1.4之前,属于java的扩展部分,而在1.5之后,已经加入到了JDK之中了。我的系统之中的java版本是1.6,所以,包含了类路径之中加入的XercesImpl.jar XML-api.jar,所以,在项目类路径之中加入那两个包以后,会造成冲突,就出现了上述的错误。将其从项目类路径之中删除后,工作正常。
估计SAE上的jre版本有些旧
5. 解决问题
原本的pom.xml中的包依赖
现在只要将xml-apis去掉就应该没问题了
dom4j dom4j 1.6.1 xml-apis xml-apis
用exclusions标签来解除依赖
最后再重新打包war包,部署到SAE,OK!!!