【问题标题】:Delete file from deployed web app from within the app从应用程序内从已部署的 Web 应用程序中删除文件
【发布时间】:2015-12-28 15:06:37
【问题描述】:

我有一个作为 WAR 构建并部署在 Apache Tomcat 上的 Java Web 应用程序。假设我的应用程序中内置了一种机制来确定它何时成功部署并在服务器上运行(我将其称为 SuccessHandler)。有条件地,在 SuccessHandler 中,我需要以编程方式从项目的部署目录中删除一个文件(比如 path-to-tomcat/webapps/my-project/file.txt),我该怎么做?

Disclamer:我可以在部署后从位于path-to-tomcat/webapps/my-project/WEB-INF/ 的资源目录中加载/删除文件+ 我可以使用硬编码的绝对路径删除文件,但这不是我想要的。无论应用程序部署在哪里,我都希望能够删除文件。

【问题讨论】:

    标签: java tomcat io application-server


    【解决方案1】:

    你不能可靠地做到这一点。在一般情况下,应用程序的内部是不可写的。特别是存档可以原地执行而不是分解;即使不是,也没有什么可以阻止服务器在每次启动时恢复文件。您将需要另一种方法来保存您的状态。

    【讨论】:

    • 这似乎是正确的,并为我指出了另一个我认为是个好主意的方向 - 我将尝试将条件提取到构建工具(在我的情况下为 Maven),以便它将 WAR 与正确的文件在里面构建。
    【解决方案2】:

    您似乎只需要删除该文件才能在其位置写入一个新文件。

    也许覆盖文件是更好的方法?

    我假设您将部署应用程序的目录存储为文件,您可以在此调用 directory.getAbsolutePath() 并将您的“文件路径”附加到该路径。

    【讨论】:

      【解决方案3】:

      您可以在 webapp 文件夹之外存储和删除文件,例如 path-to-tomcat/lib/....

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-02-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-19
        • 2019-11-03
        • 2014-03-14
        • 1970-01-01
        相关资源
        最近更新 更多