gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 22:03:50 25 4
gpt4 key购买 nike

在提供给我的部署的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com