java - 在已部署的 Apache 6.0 中转换 XML 时可能出现的错误

标签 java xml xslt tomcat servlets

在提供给我的部署的 Tomcat 6 服务器上运行 WAR 文件时,我无法显示转换后的 xml(由 xsls 转换),而当我在我机器上的 Tomcat 上运行它时,它工作正常。

代码:

    StringReader xmlInput = new StringReader(xmlString);
    InputStream xslInput = new URL(path).openStream();

    Source xmlSource = new StreamSource(xmlInput);
    Source xslSource = new StreamSource(xslInput);

    // XML result will be written to HTTP response.
    Result xmlResult = new StreamResult(response.getOutputStream());
    try {
        Transformer transformer = TransformerFactory.newInstance()
                .newTransformer(xslSource);
        transformer.transform(xmlSource, xmlResult);
    } catch (Exception e) {
        Log.err("xml xslt transform error");
        response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
        return ("return couldn't load file");
    }

其中 path 是部署的 Tomcat 服务器上的 xsl 文件的 url,可通过 GET 请求获得。

为什么这在部署的机器上不起作用?

我不确定 WAR 文件是如何在服务器上运行的,我所知道的是它在 Tomcat 6.0 服务器上运行,我看不到服务器的输出,因为我的教授不愿意分享任何此信息。

那么,我想问的是一般情况下是什么原因造成的?

编辑

我已经设法获得有关该问题的更多信息。首先没有抛出错误,servlet 返回 200 状态。其次,没有任何内容写入响应,这意味着转换函数没有完成其部分工作,无论是转换还是写入响应。

最佳答案

当处理从Servlet 中打开资源时,通常使用ServletContext 是个好主意。的 GetResourceAsStream ,这将为您提供一个 InputStream 并解决 servlet 资源可能仍打包在 WAR 文件中的问题。

请注意,GetResourceAsStream 采用的路径是相对于 request.getContextPath() 的。

你可以通过this.getServletContext()获取Servlet中的当前ServletContext

关于java - 在已部署的 Apache 6.0 中转换 XML 时可能出现的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6932672/

相关文章:

android - 工具栏菜单项文本大小更改

html - 在 HTML/XML 源中的某些属性字符串(如 src 或 href )中添加换行符

sql - TSQL-无法解析 XML(命名空间)

Java:如何在 org.w3c.dom 中用 <sometag> 包装所有元素?

css - 使用 XSLT/XML 为 HTML 标签生成样式? (xsl :attribute-set)

java - 创建用于定义常量的类

java - 调用 Hibernate session 刷新

java - JDom 是否有任何 org.w3c.dom 包装器?

xslt-1.0 - XSLT 按索引获取节点

java - 将具有 32 位无符号整数的哈希函数从 c++/Qt 迁移到 java