首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Java web应用程序(WAR)中存储配置文件的最佳位置是什么?

在Java web应用程序(WAR)中存储配置文件的最佳位置是什么?
EN

Stack Overflow用户
提问于 2008-09-18 19:53:51
回答 6查看 62.7K关注 0票数 56

我创建了一个web应用程序(WAR)并将其部署在Tomcat上。在webapp中有一个带有表单的页面,管理员可以在其中输入一些配置数据。我不想将这些数据存储在DBMS中,而只是存储在文件系统上的一个XML文件中。把它放在哪里?

我希望将该文件放在部署应用程序本身的目录树中的某个位置。我的配置文件应该在WEB-INF目录中吗?或者把它放在别的地方?

在servlet中使用什么Java代码来查找目录的绝对路径?或者可以通过相对路径访问它?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2008-09-18 20:15:24

我们要做的就是把它放在服务器上的一个单独的目录中(你可以使用类似/config,/opt/config,/root/config,/home/username/config,或者你想要的任何东西)。当我们的servlet启动时,它们读取XML文件,从中获取一些东西(最重要的是数据库连接信息),仅此而已。

我问过我们为什么要这样做一次。

将所有内容都存储在数据库中是很好的,但显然您不能将数据库连接信息存储在数据库中。

你可以在代码中硬编码一些东西,但是由于许多原因,这是丑陋的。如果信息发生变化,您必须重新构建代码并重新部署。如果有人获得了您的代码或WAR文件的副本,那么他们就会获得这些信息。

将内容放在WAR文件中似乎很好,但如果您想更改很多内容,这可能是一个糟糕的主意。问题是,如果您必须更改信息,那么下次重新部署时,它将覆盖该文件,因此您在构建到WAR中的版本中忘记更改的任何内容都会被遗忘。

文件系统中特殊位置的文件对我们来说工作得很好。它没有任何大的缺点。您知道它在哪里,它是单独存储的,如果它们都需要不同的配置值(因为它不是WAR的一部分),那么部署到多台机器上就很容易。

我能想到的唯一有效的其他解决方案是将除了数据库登录信息之外的所有内容都保存在数据库中。这将来自通过JVM检索的Java系统属性。这就是Hans Doggen上面提到的Preferences API。我不认为它是在我们的应用程序第一次开发的时候出现的,如果它是没有被使用的话。

至于访问配置文件的路径,它只是文件系统上的一个文件。你不需要担心web路径。因此,当您的servlet启动时,它只需打开"/config/myapp/config.xml“(或其他文件)中的文件,它就会找到正确的内容。对我来说,硬编码这条路径似乎没有什么坏处。

票数 49
EN

Stack Overflow用户

发布于 2008-09-18 20:19:45

WEB-INF是放置配置文件的好地方。下面是从servlet获取目录绝对路径的一些代码。

代码语言:javascript
复制
public void init(ServletConfig servletConfig) throws ServletException{
    super.init(servletConfig);
    String path = servletConfig.getServletContext().getRealPath("/WEB-INF")
票数 16
EN

Stack Overflow用户

发布于 2008-09-18 20:29:49

将其放入WEB-INF将对试图通过URL直接访问它的用户隐藏该文件,因此,是的,我建议将其放入WEB-INF

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/96247

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档