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