繁体   English   中英

如何在所有环境中获取正确的 Tomcat webapps 路径?

[英]How to get proper Tomcat webapps path in all environments?

因此,有这个 API 在tomcat/webapps/rules中创建新文件夹,并从主规则文件夹复制规则文件。 如果我正在创建一个文件夹abc ,它会将规则从tomcat/webapps/rules/masterRule 复制tomcat/webapps/rules/abc

现在,这就是我们在 java 代码中用来获取路径的方法

Path path = Paths.get(System.getProperty("catalina.base") + File.separator + "webapps" + File.separator+ "rules" + File.separator + dc_name);

现在这在开发和测试环境中运行良好。 但在产品上失败了。 因为路径是/usr/local/tomcat但它是空的。 我们可以选择从 UI 上传规则,当我们这样做时,它会在 EFS /efs-files/tomcat/webapp/rules中创建文件夹

简而言之,

  • 开发和测试 = /opt/apache-tomcat-9.0.22/webapps/rules
  • prod(但为空)= /usr/local/tomcat/webapps/rules
  • prod(从 UI 上传文件时)= /efs-files/tomcat/webapp/rules

如何编写 Java 代码以确保它在所有环境中都处于正确的路径中?

当您尝试写入 Web 应用程序自己的目录时,您走错了路。 有几个原因:

  • Web 应用程序可以部署为 WAR 文件,而无需解压缩到磁盘 - 因此文件系统中可能根本没有您的应用程序的表示。
  • 生产站点的适当强化通常会禁止写入该目录 - 因此,即使您知道文件的物理位置,也不应该假设该目录是可写的
  • 上一条强化规则的一个原因是:恢复。 如果服务器发生故障,应该 100% 清楚要恢复哪个备份、部署的软件版本等。这通常意味着应用程序与其数据完全分离。

所以:所有环境中的正确路径是明确配置为可写、备份且不包含潜在可执行恶意软件(想想有人上传 JSP 文件)的路径。 该路径位于 Tomcat 的webapps目录之外。 事实上,它通常与 Tomcat 的安装位置无关——或者它是temp目录,以防您不关心备份这些文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM