我在 tomcat 上的 WebApp 中使用第三方库。
问题是该第三方库的一个类需要使用 XML 文件进行初始化
LibraryClass lb = new LibraryClass("file path.xml");
那么我应该将文件放在tomcat目录中的什么位置以便能够从webapp内部访问它们?
(请注意,该类需要 aString
作为绝对路径,而不是 aFileStream
示例)
如果您不希望该文件可下载,请将其放置在 Java 源目录中的某个位置使其成为资源,然后将其复制到 WEB-INF/classes 中。然后使用ServletRequest.getRealPath("/WEB-INF/classes/...")
将相对路径转为绝对路径。
您可以将它们保存在 WEB-INF/classes 文件夹下。您可以在此处查看有关此内容的完整讨论: Where to place configuration properties files in a JSP/Servlet web application?
与其他答案一样,我同意这些文件的最佳位置是在您的war
捆绑包中。与其他答案不同,我不建议将文件放入,WEB-INF/classes
因为该目录用于类文件,而不是 XML 文件。
如果path.xml
位于战争的根目录中,那么您可以通过以下方式访问它:
String servletDirectoryPath = this.getServletConfig().getServletContext().getRealPath("");
String xmlConfigurationFileName = "path.xml";
File xmlConfigurationFile = new File(servletDirectoryPath, xmlConfigurationFileName);
initializeThirdPartyLibrary(xmlConfigurationFile);