gpt4 book ai didi

java - 在启动时替换 web.xml 变量

转载 作者:太空宇宙 更新时间:2023-11-04 12:40:40 25 4
gpt4 key购买 nike

我有一个 web.xml 文件,其中包含过滤器的 context-param 和 init-param 中的变量。我想用应用程序启动时从属性文件中获取的值替换此变量。

我的 web.xml 是这样的:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">

<display-name>APP NAME</display-name>
<description>
App description
</description>
<context-param>
<param-name>my-param-name</param-name>
<param-value>${my-param-name}</param-value>
</context-param>
<filter>
<filter-name>Authentication Filter</filter-name>
<filter-class>my.app.Filter</filter-class>
<init-param>
<param-name>filter-var-name</param-name>
<param-value>${filter-var-value}</param-value>
</init-param>
</filter>
...
</web-app>

还有 web.properties

my-param-name=${PARAM_VALUE_TO_BE_SETTED_BY_TOOL}
filter-var-value=${FILTER_VALUE_TO_BE_SETTED_BY_TOOL}

以下是部署的工作原理:

1) 部署工具读取给定的属性文件并用 PROD 或 Dev 值(在该工具中设置的值)替换变量,并将文件推送到 JBoss 下的应用程序模块;

2) 开始在 JBoss 上部署应用程序。我希望在启动时将 web.xml 变量替换为属性文件值。

提前致谢。

最佳答案

我们创建了一个包装过滤器,它扩展了 Servlet Filter 以将值设置为 web.xml 过滤器变量。这些值取自 DEV 和 PROD 环境的外部属性文件。

Web.xml:

...
<filter>
<filter-name>CAS Authentication Filter</filter-name>
<filter-class>my.package.WrappedFilter</filter-class>
<init-param>
<param-name>key</param-name>
<param-value>wrappedCasFilter</param-value>
</init-param>
<init-param>
<param-name>class</param-name>
<param-value>org.jasig.cas.client.authentication.AuthenticationFilter</param-value>
</init-param>
</filter>
...

属性文件:

wrappedCasFilter.init.casServerLoginUrl = https://URL

很遗憾我无法向您展示 WrappedFilter 内容。

关于java - 在启动时替换 web.xml 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36861442/

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