有关如何在J2EE项目中保留应用程序级别设置/配置文件的任何建议?我有一个必须写入日志的依赖性的Web项目和一个本地设置文件。无论如何要将设置文件存储在本地目录中并使其可写?在Web应用程序中保留设置文件
[有些依赖的是:休眠和gridgain,所以它们产生大量的日志]
我宁可不要硬编码的设置文件的位置。
有关如何在J2EE项目中保留应用程序级别设置/配置文件的任何建议?我有一个必须写入日志的依赖性的Web项目和一个本地设置文件。无论如何要将设置文件存储在本地目录中并使其可写?在Web应用程序中保留设置文件
[有些依赖的是:休眠和gridgain,所以它们产生大量的日志]
我宁可不要硬编码的设置文件的位置。
您应该将配置文件放在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
方法获取该值)。
但是,这只适用于配置文件,它不需要在类路径中。
与Soundlink达成一致。
您还可以将您的设置存储在数据库中。当你的servlet启动时,设置数据应该从数据库加载。
我不喜欢这个解决方案,因为它要求您在数据库中拥有一组特定的表,或者为应用程序提供一个数据库。我正在使用的数据库已经很大。设置文件使Web应用程序易于管理。 – monksy 2010-08-22 04:48:11
只需将配置文件的路径添加到webapp的类路径即可。这是常用的方法,许多API也用于从类路径加载配置。对于手动加载这些文件的情况,可以使用ClassLoader#getResourceAsStream()
获取类路径资源的InputStream
。
首先,在webapp目录之外的某处创建一个固定路径,以便将配置文件放入,例如, /var/webapp/config
。然后配置servletcontainer以将此路径包含在类路径中。对于Tomcat,您可以在/conf/catalina.properties
文件的shared.loader
或common.loader
属性中指定它。
如果你这样做,配置文件对所有安装的webapps都是可见的。如果你只有一个webapp,那没关系,否则这可能会有问题。 – Soundlink 2010-08-22 08:36:24
只有重新部署webapp时,您才会丢失日志。 – BalusC 2010-08-22 04:16:27
这并不妨碍我。日志最终会进入tomcat日志文件夹[不会打扰我] – monksy 2010-08-22 04:53:49
Web-INF是编译进战争还是战争之外? – monksy 2010-08-22 04:54:16