Java Tomcat7使用自定义文件部署应用程序

Java Tomcat7使用自定义文件部署应用程序,java,apache,tomcat,netbeans,deployment,Java,Apache,Tomcat,Netbeans,Deployment,这是我的netBeans项目的内容: 要使用名为“ErrorSet”的文件夹,我使用以下行: File file = new File("ErrorSet/error_list.xml"); 有必要导入此文件,因为它包含自定义错误代码,具体如下: 当您想在netbeans项目中导入某些内容时,使用这些文件的默认“根”是项目名称文件夹,如[projectName]/ErrorSet/error_list.xml 在tocmat7中部署[projectName].war from dist文件夹

这是我的netBeans项目的内容:

要使用名为“ErrorSet”的文件夹,我使用以下行:

File file = new File("ErrorSet/error_list.xml");
有必要导入此文件,因为它包含自定义错误代码,具体如下:

当您想在netbeans项目中导入某些内容时,使用这些文件的默认“根”是项目名称文件夹,如[projectName]/ErrorSet/error_list.xml


在tocmat7中部署[projectName].war from dist文件夹时,我需要将ErrorSet文件夹放在哪里,以便正确使用新文件?文件(“ErrorSet/error_list.xml”)的父目录自在tomcat7中运行以来变成了什么

请记住,
网页
源代码包
是不同的东西

要将
源程序包
中的类与自定义文件一起使用,您必须将文件放在
程序包
中,并像这样使用
getClass().gerResource()

如果
ErrorSet
文件夹是另一个包中的文件夹,请使用以下方法:

File file = new File(getClass().getResource("ErrorSet/error_list.xml").toURI());

如果
error\u list.xml
与类在同一个包中,只需使用
getResource(“error\u list.xml”)
不要使用
java.io.File

相反,使用可以从
类加载器
获得的流,如下所示:

InputStream in = null;

try {
  in = request.getServletContext().getResourceAsStream("/WEB-INF/ErrorSet/error_list.xml");

  if(null != in) {
    // read the XML
  }
} finally {
  if(null != in) try { in.close(); }
                 catch (IOException ioe) { /* log this */ }
}
现在,将文件放入部署中的
/WEB-INF/ErrorSet/error\u list.xml


无论文件是在文件系统中还是打包在未爆炸的WAR文件中,这都会起作用。它还可以在安装了SecurityManager的环境中工作,该环境不允许web应用程序读取文件,因为servlet容器可能具有读取这些文件的权限。

这是脆弱的,在某些环境中是不可能的。您不应该在此处使用
java.io.File
。请注意这一点,非常感谢您的回复,我们将在未来的应用程序中使用它。