gpt4 book ai didi

tomcat7 - Tomcat 7 应用程序 Java 环境变量(无 JNDI)

转载 作者:行者123 更新时间:2023-12-01 00:57:15 25 4
gpt4 key购买 nike

我正在运行 Tomcat 7,我需要向我的两个 Web 应用程序传递一个具有相同名称但每个 Web 应用程序具有不同值的环境变量。

有没有办法在不使用 JNDI 的情况下拥有特定于应用程序的环境变量(每个应用程序的相同变量具有不同的值)?

我正在考虑在特定于应用程序的上下文中使用 -Dname=bob 之类的东西。

最佳答案

为每个应用程序创建一个名为 application war 文件的文件,并将该文件放在 Tomcat 7 conf/Catalina/localhost/目录中。

每个文件然后可以包含一些特定于应用程序的环境变量。

比如部署在webapps目录下的两个应用project1.war和project2.war。

在文件 conf/Catalina/localhost/project1.xml

<Context path="" docBase="project1">
<Environment name="product" value="one" type="java.lang.String" override="false" />
</Context>

conf/Catalina/localhost/project2.xml
<Context path="" docBase="project1">
<Environment name="product" value="two" type="java.lang.String" override="false" />
</Context>

我也没有经历双重部署。

我的开发服务器主机是:
<Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true" deployOnStartup="true">

我的生产服务器主机是:
<Host name="www.learnintouch.com"  appBase="webapps" unpackWARs="true" autoDeploy="true" deployOnStartup="true">

为了检索变量的值,我使用了 Spring 条件上下文:
public class ProductProjectCondition implements Condition {

@Override
public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
return context.getEnvironment().getProperty("product") == null || context.getEnvironment().getProperty("product").equals("project");
}

}

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Conditional(ProductProjectCondition.class)
public @interface ProductProject {
}

然后可以使用@ProductProject 注释。

关于tomcat7 - Tomcat 7 应用程序 Java 环境变量(无 JNDI),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26652264/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com