【问题标题】:How to preserve folders on server when deploying war file部署war文件时如何在服务器上保留文件夹
【发布时间】:2018-05-03 04:29:17
【问题描述】:

我正在使用 Tomcat 开发应用程序。我通过复制一个war文件并重新启动tomcat服务进行部署。但是,我有一个装满图像和其他辅助数据的大文件夹。我的问题是:是否有替代方法可以将所有数据包含在 war 文件中以进行部署?具体来说: 1)在部署war文件期间,app文件夹中的文件夹是否可以被“保护”,这样它们就不会被删除? 2) 将修改后的类和 jsp 文件分段上传到 app 文件夹而不是每次都重新部署整个 .war 文件是不好的做法吗?如果这是不好的做法,为什么?

【问题讨论】:

  • 有一些标准方法可以存储不属于部署的应用程序数据。您可以通过编写代码来做到这一点,以便它使用系统属性(即配置变量)来告诉它应用程序数据将存储在应用程序本身之外的位置。
  • 保留文件夹是不可能的,任何黑客都是不好的做法。正如吉姆所提到的,您可以考虑在项目本身之外存储东西。或者,您可以考虑将您的应用程序拆分为多个 war 文件。将所有大图像等放在不同的项目中。但它仍然可以作为一场战争进行管理和部署。
  • 我的理由是:我正在开发一个应用程序(我希望有一天)会有很多用户。如果我存储在文档根目录之外,那么我需要使用 Servlet 来访问文件系统,这意味着产生一个新的 java 线程,我认为如果我想最大限度地提高效率,我不应该这样做。如果我将文件存储在文档根目录中,则可以通过 Web 服务器(在我的情况下为 nginx)将文件直接发送到客户端,我认为这会更有效。如果我的逻辑有问题,请告诉我。

标签: java tomcat deployment


【解决方案1】:

我解决了这个问题:将文档根目录之外的数据存储在具有正确权限的文件夹中,然后在 Web 服务器配置文件中使用“别名”语句。

就我而言,我使用的是 nginx,我的位置声明是:

    location /MyApp/data{alias /opt/myapp/data;}

然后我可以在应用程序中引用 /data。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多