【发布时间】:2015-03-16 19:42:46
【问题描述】:
我在 Tomcat 8 中运行一个使用 OpenSAML 的 webapp。我已经在 Tomcat 中认可了 Xerces,我已经检查了认可的 dir 路径是否设置正确,看来一切正常:
[ajp-apr-8009-exec-22] 调试 org.opensaml.xml.Configuration - VM 使用 JAXP 解析器 org.apache.xerces.jaxp.DocumentBuilderFactoryImpl
我收到了几个运行良好的请求,一切看起来都很好,我可以毫无错误地运行那段代码,然后突然之间,我开始收到这个错误:
OpenSAML 需要一个支持 JAXP 1.3 和 DOM3 的 xml 解析器。 JVM 当前配置为使用已知的 Sun XML 解析器 是错误的,不能与 OpenSAML 一起使用。请认可一个功能 JAXP 库,例如 Xerces 和 Xalan。有关如何背书的说明 一个新的解析器见http://java.sun.com/j2se/1.5.0/docs/guide/standards/index.html
at org.opensaml.xml.Configuration.validateNonSunJAXP(Configuration.java:278)
at org.opensaml.xml.parse.BasicParserPool.<init>(BasicParserPool.java:126)
一旦我开始收到错误,我每次都会收到错误,但我无法确定触发问题的原因。 (编辑:看来这可能在某种程度上与 docx4j 的使用有关,错误在使用 docx4j 将文件生成为 word 文档的请求之后开始。由于 docx4j 非常依赖 XML,这可能是有道理的。)
基本上,validateNonSunJAXP() 所做的非常简单。它所做的只是检查 DocumentBuilderFactory 的类名,如果它以“com.sun”开头,则会引发错误。
有什么想法会导致 VM 停止使用认可的库吗?
【问题讨论】:
标签: java xml tomcat docx4j opensaml