【问题标题】:tomcat webapp - where do i store permanent filestomcat webapp - 我在哪里存储永久文件
【发布时间】:2012-04-17 15:17:47
【问题描述】:

我正在开发一个在 Tomcat 上运行的旧 Java Web 应用程序。我知道通常您从使用 Tomcat 的默认服务器配置 (server.xml) 的 webapps 目录运行 Web 应用程序。这个特定的应用程序使用自定义 server.xml 部署到不同的目录,因此每个应用程序需要 1 个 tomcat 实例。我相信最初以这种方式设置的原因是因为每个 Web 应用程序都会生成必须在应用程序重新部署之间保存的文件。

我的问题是 - 有没有一种方法可以使用 webapps 目录,同时又可以避免某些文件在重新部署应用程序期间被清除?

这是我们当前的 tomcat 的布局

tomcat/
  servers/
    ourapp/
      output/   # heres where the files go that we save
      ourapp/   # this is the actual webapp (exploded WAR file)
        WEB-INF/
        ...

我想要类似的东西

tomcat/
  webapps/
    ourapp/
      output/  # but this is saved between redeploys
      WEB-INF/
    ...

我的最终目标是摆脱自定义 server.xml,因此我们在一个 tomcat 实例上部署多个应用程序。以防万一 - 我们使用的是 Tomcat 6。

【问题讨论】:

标签: java tomcat


【解决方案1】:

我建议不要尝试将这些文件存储在 webapps/ 中,如果您希望它们持久存在的话。该目录非常不稳定。此外,维护系统的其他开发人员可能没有意识到您在那里存储了持久性数据,并且可能只是不小心将其擦除。

我会去/var/lib,也许是/var/lib/ourapp/...。或者,如果这对您的服务器环境及其管理方式有意义,您可以将其存储在 $HOME/.ourapp

【讨论】:

  • +1; “永久”文件应存储在可配置的位置。这些文件可以流式传输、符号链接等。
  • @DaveNewton - 同意配置。我通常使用属性文件或系统属性来定义存储位置。
  • 酷 - 谢谢大家。那讲得通。我会在 10 分钟后立即接受。
  • @jeff - 你不必立即接受它;如果你给它一些时间,其他人可能会有很好的替代想法。
  • @user384706 - 人们不太可能过来并删除 /var 中的某些内容。不过,使用webapps/ 目录,在升级或重新部署时擦除提取的war 目录和/或war 文件可能很常见。人们不期望持久性数据存在。它违反了principle of least astonishment
【解决方案2】:

我建议您将文件保存在Tomcat 下(可以在webapps 外部或内部),而不是在文件系统中的随机目录中。
通过这种方式,它以某种方式与您的网络应用“捆绑”

【讨论】:

  • 我同意让事物彼此靠近是件好事,但 IMO 在$TOMCAT_HOME 下的目录比/var/ourapp$HOME/.ourapp 之类的位置更随意。这些目录是应用程序数据的标准 linux 位置。它还取决于 Tomcat 的安装方式。如果通过 RPM 完成,Tomcat 可能会安装到 /usr 某个地方,这将是一个存储持久应用程序数据的尴尬地方。请参阅Linux Filesystem Hierarchy
猜你喜欢
  • 2012-03-22
  • 1970-01-01
  • 1970-01-01
  • 2021-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-01
  • 2011-05-31
相关资源
最近更新 更多