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

时间:2014-11-12 18:45:27

标签: java apache tomcat netbeans deployment

这是我的netBeans项目的内容:

NetBeans project content

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

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

有必要导入此文件,因为它包含自定义错误代码:

如果要在netbeans项目中导入内容,则使用文件的默认“root”是项目名称文件夹,如[projectName] /ErrorSet/error_list.xml ...

在tocmat7中从dist文件夹部署[projectName] .war时,我需要放置ErrorSet文件夹,以便我可以正确使用新文件? File(“ErrorSet / error_list.xml”)父目录在tomcat7中变成了什么?

2 个答案:

答案 0 :(得分:1)

请注意,Web PagesSource packages是不同的事情。

要将Source packages内的类与自定义文件一起使用,您必须将文件放在Package内并使用getClass().gerResource(),如下所示:

如果ErrorSet文件夹是另一个包内的文件夹,请使用:

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

如果error_list.xml与课程在同一个包中,只需使用getResource("error_list.xml")

答案 1 :(得分:1)

请勿使用java.io.File

相反,请使用您可以从ClassLoader获取的流,如下所示:

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_list.xml

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