使用tomcat上的连续部署解析xml String时的DocumentBuilder FileNotFoundException

时间:2013-07-17 13:07:20

标签: java-ee xml-parsing filenotfoundexception continuous-deployment

我有一个实用程序类,它将Object转换为xml String,然后从中构建pdf。

该类工作正常但我最近开始在Tomcat上使用持续部署(即app.war现在部署为app ## 00010.war并且该应用程序的新版本每天上载两次)从那时起我我在使用DocumentBuilder时遇到了一些大问题。

我的实用程序类必须从类路径(DTD,fop conf,xsl styesheet等)加载多个文件。我使用完整路径[路径启动] / Tomcat 7.0 / webapps / app ## 0010 / [文件路径]来加载文件,但我得到一个FileNotFoundException [路径启动] \ Tomcat 7.0 \ webapps \ app (系统找不到指定的文件)。

因此,DocumentBuilder似乎忽略了我给他的完整路径。

这是我用来将xml String转换为xml文件的方法:

    public static Document stringToXml(String xmlSource) throws SAXException,ParserConfigurationException,
        MalformedURLException,IOException{
    DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
    factory.setNamespaceAware(true);
    DocumentBuilder builder=factory.newDocumentBuilder();

    return builder.parse(new InputSource(new StringReader(xmlSource)));
}

xmlSource类似于"<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE doc SYSTEM "file:///[path start]/Tomcat 7.0/webapps/app##0010/ [...] /pdf.dtd">"

如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

好的我使用自定义实体解析器修复了它,如以下帖子所示:Parsing an XML file with a DTD schema on a relative path