我是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);
}
答案 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
)