十一 04

XML解析器选用不当,经常会导致使用Apache Axis时出现一些莫名其妙的问题。

由于Apache Axis 并未对Resin内置的xml解析器进行过测试,因此推荐读者使用已通过测试的Xerces xml解析器。可以从 http://xml.apache.org/xalan-j/index.html 处下载Xalan的Java版XSLT处理器,其中包含了Xerces的Java版XML解析器,不需要再单独下载xml解析器。

Xalan 2.5.1解包后,将bin/目录下的xercesImpl.jar、xml-apis.jar和xalan.jar复制到resin安装目录的lib/目录下,例如/usr/local/resin/lib。

编辑/etc/目录下的profile文件,找到设置CLASSPATH环境变量的位置,在其后加入下面的内容(B shell)。



XMLPARSER=$RESIN_HOME/lib/xalan.jar:$RESIN_HOME/lib/xercesImpl.jar:$RESIN_HOME/lib/xml-apis.jar
export CLASSPATH=$XMLPARSER:$CLASSPATH



注意事项
如果CLASSPATH中包含其它的XML解析器设置,应将其从CLASSPATH环境变量的设置中去掉,以免发生冲突。

通过修改resin.conf将resin的XmlParser置换为Xerces的XmlParser。在resin.conf对应的Web应用程序配置中加入以下设置。



<system-property javax.xml.transform.TransformerFactory="org.apache.xalan.processor.TransformerFactoryImpl"/>
<system-property javax.xml.parsers.DocumentBuilderFactory="org.apache.xerces.jaxp.DocumentBuilderFactoryImpl"/>
<system-property javax.xml.parsers.SAXParserFactory="org.apache.xerces.jaxp.SAXParserFactoryImpl"/>
<system-property org.xml.sax.driver="org.apache.xerces.parsers.SAXParser"/>



配置完成后重新启动Resin。


Tags: ,

作者:Jock

Leave a Reply

You must be logged in to post a comment.

Switch to our mobile site