在启动时替换web.xml变量

时间:2016-04-26 09:55:46

标签: java filter war web.xml

我有一个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变量替换为属性文件值。

提前致谢。

1 个答案:

答案 0 :(得分:0)

我们创建了一个包装过滤器,它扩展了Servlet过滤器,以便将值设置为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的内容。