从应用程序中删除已部署的 Web 应用程序中的文件
Delete file from deployed web app from within the app
我有一个 Java Web 应用程序,我构建为 WAR 并部署在 Apache Tomcat 上。假设我的应用程序内置了一种机制来确定它何时成功部署并 运行 在服务器上(我将其称为 SuccessHandler)。有条件地在 SuccessHandler 中我需要以编程方式从项目的部署目录中删除一个文件(比如 path-to-tomcat/webapps/my-project/file.txt
)我该怎么做?
免责声明:部署后,我能够从驻留在 path-to-tomcat/webapps/my-project/WEB-INF/
中的资源目录中 load/delete 文件 + 我能够使用硬编码绝对路径删除文件,但这不是我在找什么。无论应用程序部署在哪里,我都希望能够删除文件。
你做不到可靠。在一般情况下,应用程序的内部是不可写的。特别是,存档可能会原地执行,不会被爆破;即使不是,也没有什么可以阻止服务器在每次启动时恢复文件。您将需要另一种方法来保存您的状态。
看来您只需要删除文件就可以在原处写一个新文件。
也许覆盖文件是更好的方法?
我假设您将部署应用程序的目录存储为文件,您可以在此调用 directory.getAbsolutePath() 并将 "path to file" 附加到该路径。
您可以存储和删除 webapp 文件夹之外的文件,例如 path-to-tomcat/lib/....
我有一个 Java Web 应用程序,我构建为 WAR 并部署在 Apache Tomcat 上。假设我的应用程序内置了一种机制来确定它何时成功部署并 运行 在服务器上(我将其称为 SuccessHandler)。有条件地在 SuccessHandler 中我需要以编程方式从项目的部署目录中删除一个文件(比如 path-to-tomcat/webapps/my-project/file.txt
)我该怎么做?
免责声明:部署后,我能够从驻留在 path-to-tomcat/webapps/my-project/WEB-INF/
中的资源目录中 load/delete 文件 + 我能够使用硬编码绝对路径删除文件,但这不是我在找什么。无论应用程序部署在哪里,我都希望能够删除文件。
你做不到可靠。在一般情况下,应用程序的内部是不可写的。特别是,存档可能会原地执行,不会被爆破;即使不是,也没有什么可以阻止服务器在每次启动时恢复文件。您将需要另一种方法来保存您的状态。
看来您只需要删除文件就可以在原处写一个新文件。
也许覆盖文件是更好的方法?
我假设您将部署应用程序的目录存储为文件,您可以在此调用 directory.getAbsolutePath() 并将 "path to file" 附加到该路径。
您可以存储和删除 webapp 文件夹之外的文件,例如 path-to-tomcat/lib/....