Java Tomcat中的外部web应用程序配置

Java Tomcat中的外部web应用程序配置,java,tomcat,jndi,Java,Tomcat,Jndi,它有一个web应用程序和许多工作环境。在每个环境中,它都有不同的设置,如DB连接和SOAP端点,这些设置依次在属性文件中定义,并通过以下方式访问: config.load(AppProp.class.getClassLoader().getResourceAsStream( PROPERTIES_FILE_PATH + PROPERTIES_FILE_NAME)); 因此,WAR文件对于每个环境都是不同的 我们需要的是构建一个统一的WAR文件,该文件不包含任何配置,可以在任何环境中工作

它有一个web应用程序和许多工作环境。在每个环境中,它都有不同的设置,如DB连接和SOAP端点,这些设置依次在属性文件中定义,并通过以下方式访问:

config.load(AppProp.class.getClassLoader().getResourceAsStream(
    PROPERTIES_FILE_PATH + PROPERTIES_FILE_NAME));
因此,WAR文件对于每个环境都是不同的

我们需要的是构建一个统一的WAR文件,该文件不包含任何配置,可以在任何环境中工作(现在是Tomcat实例),从WAR文件外部获取其配置

在我看来,答案给出了一整套常见的方法,但只有几个例子。最有吸引力的方法是配置JNDI查找机制。我猜它允许通过上下文路径分别配置web应用程序。但是在互联网和Tomcat的文档中都找不到简单的(逐步的)说明。不幸的是,为了满足如此简单和自然的需求,我们不能花太多时间研究这些复杂的东西:(


如果只是在不同的环境(由不同的操作系统用户执行)上部署WAR,则您可以将所有配置文件放在用户的主文件夹中,并按以下方式加载:

config.load(new FileInputStream(System.getProperty("user.home") + PROPERTIES_FILE_NAME));

这为您提供了隔离和安全性,并使您的WAR完全可移植。不过,理想情况下,如果在您的情况下有意义的话,您仍然应该提供内置的默认配置。

我们采取的方法是基于我们现有的部署方法,即将WAR文件放在Tomcat旁边的文件系统中,并部署一个context.xml将WAR文件指向Tomcat

上下文描述符允许提供在servlet中易于访问的init参数


如果只有一个WAR文件部署到此Tomcat实例,还可以将init参数添加到默认的全局上下文XML中。这些参数将是全局的,然后可以直接部署WAR文件。这在开发过程中非常有用。

“很遗憾,我们不能花太多时间研究这些复杂的东西…”-这是说“我没有做足够的研究”的另一种说法吗?@Stephen C-没错!我认为这不够灵活:(在中,有一个版本具有硬编码的绝对路径。但是如果同一个框中有两个实例,Tomcat会怎么样呢?需要在web容器中配置web应用程序的东西。只需使用不同的用户启动Tomcat。只是想知道,在同一个框中的两个不同Tomcat实例中运行相同的应用程序是什么情况(可能有不同的上下文路径??)。