如何在war文件中指定目录?

时间:2010-02-18 11:33:01

标签: java deployment servlets jboss directory

我是servlet的新手。我在servlet中使用以下代码。然后部署到Jboss 4.1。 backup_database_configuration_location是属性文件的位置。但是无法找到它。如何在war文件中指定目录? 提前全部谢谢

try {
  backupDatabaseConfiguration = new Properties();
  FileInputStream backupDatabaseConfigurationfile = new FileInputStream(backup_database_configuration_location));
  backupDatabaseConfiguration.load(backupDatabaseConfigurationfile);
  backupDatabaseConfigurationfile.close();
} catch (Exception e) {
  log.error("Exception while loading backup databse configuration ", e);
  throw new ServletException(e);
}

2 个答案:

答案 0 :(得分:2)

如果它位于 webcontent 中,请使用ServletContext#getResourceAsStream()

InputStream input = getServletContext().getResourceAsStream("/WEB-INF/file.properties"));

getServletContext()方法继承自HttpServlet。只需在servlet中调用它即可。

如果它位于类路径中,请使用ClassLoader#getResourceAsStream()

InputStream input = Thread.currentThread().getContextClassLoader().getResourceAsStream("file.properties");

Class#getResourceAsStream()的区别在于,您不依赖于加载类的类加载器(如果该类实际上是例如打包的实用程序类,则可能与该线程使用的类不同)一个JAR和特定的类加载器可能无法访问某些类路径路径。)

答案 1 :(得分:1)

您的属性文件位于何处?它是直接在硬盘中的某个地方,还是打包在JAR文件中?

您可以尝试使用getResourceAsStream()方法检索文件:

configuration = new Properties();
configuration.load(MyClass.class.getResourceAsStream(backup_database_configuration_location));

(或者当然,用您当前的班级名称替换MyClass