web-applications - 如何自定义我的 web.xml 配置

标签 web-applications configuration tomcat jakarta-ee

我想为许多不同的客户部署相同的 Web 应用程序。每个部署都需要在 web.xml 配置文件的元素之一中使用不同的值。

如果不为每个客户构建不同的 .war 文件(在每个 .war 的 web.xml 中设置不同的值),是否可以为不同的客户配置值?例如,web.xml 文件能否从每个部署属性文件中获取值?

我们使用 Tomcat 作为 servlet 容器。

最佳答案

您可以使用 Tomcat 的 JNDI support 在 web.xml 之外指定不断变化的属性.

例如,在 Context 中指定一个环境条目元素:

<Context ...>
  ...
  <Environment name="maxExemptions" value="10"
         type="java.lang.Integer" override="false"/>
  ...
</Context>

然后在您的 web.xml 中指定指向此环境变量的链接:

<env-entry>
  <env-entry-name>maxExemptions</param-name>
  <env-entry-type>java.lang.Integer</env-entry-type>
</env-entry>

然后使用(来自 Professional Apache Tomcat 6 )从您的代码调用:

private final Object lock = new Object();
...
synchronized (lock) {
    Context initCtx = new InitialContext();
    Context envCtx = initCtx.lookup("java:comp/env");
    Integer maxExemptions = (Integer) envCtx.lookup("maxExemptions");
}

或者您可以使用 <jndi-lookup /> 通过 Spring 将您的值注入(inject)到您的应用程序中

<bean id="someBean">
    <property name="maxExemptions">
        <jndi-lookup jndi-name="xxx" />
    </property>
</bean>

关于web-applications - 如何自定义我的 web.xml 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/997311/

相关文章:

.net - 如何使用 Web 服务以批处理模式将条码扫描器连接到 Web 应用程序?

javascript - 检查 JavaScript 空值

configuration - 读取 MSBuild 任务中的配置值

Java SecurityManager 防止 .. 目录使用

java - 将 javascript 添加到 Tapestry 应用程序的方法是什么?

java - Spring Boot - 如何测试图像是否正确提供

java - Glassfish 中的重定向(添加尾部斜杠)

java - Spring 启动: "Error creating bean with name baseConfig: Invocation of init method failed" NPE

java - 在 Tomcat 服务器中部署 war 文件的问题

java - Rest 服务出现 404 错误 - Jersey/tomcat8