当前位置: 首页 > 知识库问答 >
问题:

替换web。启动时的xml变量

方嘉志
2023-03-14

我有一个网站。在过滤器的context param和init param中包含变量的xml文件。我想用应用程序启动时从属性文件中获取的值替换这个变量。

我的网络。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>

和网络。属性

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上启动应用程序的部署。我想要那个网站。xml变量在启动时由属性文件值替换。

提前感谢。

共有1个答案

红明德
2023-03-14

我们创建了一个包装过滤器,该过滤器扩展了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的内容。

 类似资料:
  • 我试着启用执行器endpoint。但当我尝试访问-或时,我得到404 Springboot版本- 为此,我在下面添加了build.gradle文件。 我错过什么了吗? 另外,我还想知道如何用一些凭据保护这个endpoint。我想我可以使用spring security来保护这个endpoint,但是,如果我集成了spring security的话,我不想影响/阻止应用程序中的其他页面。如何做到这一

  • 在本章中,我们将学习XML DOM对象中的替换节点操作。DOM中的所有内容都保存在分层信息单元中,替换节点提供了另一种更新这些指定节点或文本节点的方法。 以下是替换节点的两个方法 - 1. replaceChild()方法 方法用新节点替换指定的节点。 语法 具有以下语法 - 其中, - 是放入子列表的新节点。 - 是列表中要替换的节点。 此方法返回已替换的节点。 示例 以下示例(replacen

  • 我一直在尝试在我的应用程序中动态替换一个片段,但这样做时,我一直会遇到RuntimeException,因为它找不到应该添加片段的容器ID。我尝试过在类似线程上找到的每一个解决方案,从干净的构建到使用ChildFragmentManager,但仍然有相同的错误。最奇怪的是,当我在onCreate中没有指定任何容器时,一切都很顺利,但一旦指定了容器,应用程序就会崩溃。以下是代码和堆栈跟踪: 堆栈跟踪

  • 问题内容: 尝试用sed替换字符串时发生奇怪的事情。这有效: 因此,当我手动键入字符串时,它可以工作。但在以下情况下,不会发生替换: 当我回显这两个变量PATTERN和REPLACEMENT时,它们具有正确的值。 我试图用配置目录中所有文件中的替换字符串替换所有出现的模式字符串。 问题答案: 尝试 代替。’引号不会扩展变量。

  • 问题内容: 我想替换元素标签中的值,具体取决于它的值以及另一个元素的值(与所述元素处于同一级别),这两个元素到处都在同一个父元素标签中(每个父标签都是唯一的) (由于其自身的ID属性)。我想在存储过程中的此XML变量的各个位置进行更改。 作为第一次使用此计时器,我对如何修改整个xml中的元素感到困惑。这两个元素都存在于整个文档的同一父元素中,并且这些父标签中的每一个都有唯一的ID属性。 任何建议都

  • 在这件事上,我的头撞在墙上已经好几天了。我们正在使用SpringWebServices 2.1.3。我添加了PayloadValidatingInterceptor的一个简单子类来捕获XSD模式验证错误。 配置: XsdValidationInterceptor重写HandlerRequestValidationErrors: 到现在为止,一直都还不错。这个问题是Xerces解析器返回的消息的格式