2010-08-21 83 views
1

有关如何在J2EE项目中保留应用程序级别设置/配置文件的任何建议?我有一个必须写入日志的依赖性的Web项目和一个本地设置文件。无论如何要将设置文件存储在本地目录中并使其可写?在Web应用程序中保留设置文件

[有些依赖的是:休眠和gridgain,所以它们产生大量的日志]

我宁可不要硬编码的设置文件的位置。

回答

5

您应该将配置文件放在WEB-INF文件夹下。你可以创建一个目录/WEB-INF/config。如果他们应该在classpath中把它们放到/WEB-INF/classes。通过这样做,该位置不是硬编码的,而是位于您的应用程序的众所周知的位置。

将它们放入/WEB-INF很重要,所以文件不能被浏览器“访问”。


另一种方式可能是一个参数添加到web.xml配置,其中您指定配置文件的位置,以便它们不是webapps目录内。你可以通过添加一个context-param来做到这一点。例如:

<context-param> 
    <param-name>configuration</param-name> 
    <param-value>/var/myapp/config</param-value> 
</context-param> 

值将变为可见于Web应用程序为名为配置一个servlet上下文初始化参数。然后,您可以将其用作读取配置文件的基本路径(通过调用ServletContext中的getInitParameter方法获取该值)。

但是,这只适用于配置文件,它不需要在类路径中。

+0

只有重新部署webapp时,您才会丢失日志。 – BalusC 2010-08-22 04:16:27

+0

这并不妨碍我。日志最终会进入tomcat日志文件夹[不会打扰我] – monksy 2010-08-22 04:53:49

+0

Web-INF是编译进战争还是战争之外? – monksy 2010-08-22 04:54:16

0

与Soundlink达成一致。

您还可以将您的设置存储在数据库中。当你的servlet启动时,设置数据应该从数据库加载。

  • 亲:无须维护不属于Java EE的 标准 配置文件。
  • con:它在servlet启动后起作用 up。
+0

我不喜欢这个解决方案,因为它要求您在数据库中拥有一组特定的表,或者为应用程序提供一个数据库。我正在使用的数据库已经很大。设置文件使Web应用程序易于管理。 – monksy 2010-08-22 04:48:11

2

只需将配置文件的路径添加到webapp的类路径即可。这是常用的方法,许多API也用于从类路径加载配置。对于手动加载这些文件的情况,可以使用ClassLoader#getResourceAsStream()获取类路径资源的InputStream

首先,在webapp目录之外的某处创建一个固定路径,以便将配置文件放入,例如, /var/webapp/config。然后配置servletcontainer以将此路径包含在类路径中。对于Tomcat,您可以在/conf/catalina.properties文件的shared.loadercommon.loader属性中指定它。

+0

如果你这样做,配置文件对所有安装的webapps都是可见的。如果你只有一个webapp,那没关系,否则这可能会有问题。 – Soundlink 2010-08-22 08:36:24

相关问题