java - 动态获取 Apache Tomcat 服务器路径和端口

标签 java apache tomcat

我在 Eclipse 中开发了一个 API,部署在 Apache Tomcat 服务器 上,它修改保存在中的 XML 文件服务器的 ROOT 文件夹。

Apache Tomcat 安装在我系统的 D 盘中,因此我在 API 中硬编码了该路径,如下所示

new File("D:\\Program Files\\Apache Software Foundation\\Tomcat 7.0\\webapps\\ROOT\\example\\example.xml")

此外,我已将服务器配置为使用端口 8080,因此我还在 API 中像这样对 URI 路径进行了硬编码

String uriPath = "http://localhost:8080/example/example2";

而且效果很好。

但现在我想在具有 Apache Tomcat 的不同 系统上以 WAR 文件的形式部署相同的 API。

如何以编程方式获取这些系统的 Apache Tomcat ROOT 文件夹路径端口号,以便一个 API 适用于所有系统?如何将其集成到 API 中?

最佳答案

JEE 规范中有许多原因说明了您不应该这样做的原因,但除此之外,您可以获得一种与平台无关的方法来确定 tomcat 的位置。

系统在启动时定义了两个变量,CATALINA_HOME 和 CATALINA_BASE。您应该能够使用 System.getProperty("catalina.base") 从系统中获取 CATALINA_BASE

从那里你可以假设建立这样的路径:

final String catalinaBase= System.getProperty("catalina.base");
final File catalinaBaseDir= new File(catalinaBase);
final File exampleXML= new File(catalinaBase, "webapps/root/example/example.xml");

至于URI路径,this article应该为你提供足够的引用来做你想做的事。

关于java - 动态获取 Apache Tomcat 服务器路径和端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23151374/

相关文章:

java - 生产服务器中的 OutOfMemoryException

java - 使用自定义工作流程更新节点属性 AEM

java - 线程共享的 ReentrantLock 似乎不支持锁定

带身份验证的 Apache VirtualHost,websockets

apache - .htaccess 重定向以 %(百分比)符号开头

apache - 这些配置更改是否适合我的需要?

eclipse - java.lang.ClassNotFoundException : waffle. apache.NegotiateAuthenticator 异常

java - 分析庞大的数字数据集

java - Selenium Appium Java Android Chrome 浏览器

spring-mvc - 通过编码错误的 WAR 部署的 Spring Boot 静态文件