在部署时在Jboss EAP 6.4中覆盖web.xml中的context-param

问题描述 投票:0回答:1

目标 - 在Jboss EAP 6.4上部署项目战争,在web.xml中为context-param参数提供新值,而不编辑现有的war。 当前状态 -

  • 如果我在构建本身时放置所需的web.xml值,war就有效。但是当我使用默认的web.xml时失败了。
  • 默认war在Tomcat 9上工作正常,因为它在管理器控制台gui上有“XML配置文件路径”选项可覆盖默认web.xml的值。

我的默认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_3_0.xsd" version="3.0">
<display-name>Myproject Web Service</display-name>

<context-param>
    <param-name>myproject.appserver</param-name>
    <param-value>jbosseap</param-value>
</context-param>
<context-param>
    <param-name>myproject.logpath</param-name>
    <param-value></param-value>
</context-param>
<context-param>
    <param-name>myproject.dbtype</param-name>
    <param-value></param-value>
</context-param>

<listener>
    <listener-class>com.myproject.ApplicationStartListener</listener-class>
</listener>

<error-page>
    <error-code>404</error-code>
    <location>/pages//404ErrorView.html</location>
</error-page></web-app>

所需值为 -

<context-param>
    <param-name>myproject.logpath</param-name>
    <param-value>D:\myproject\vXX\workspace</param-value>
</context-param>
<context-param>
    <param-name>myproject.dbtype</param-name>
    <param-value>MSSQL</param-value>
</context-param>

排除故障 -

  • 在Jboss EAP 6.4官方文档中没有提到这种方式。
  • Jboss EAP管理控制台(http://localhost:9990/console/App.html#home)中没有此类选项可用于部署tomcat。
  • 在我的案例中,对于类似问题的帖子,没有一个SO答案有帮助。

由于我们向客户发送同样的战争,因此决定不让客户编辑战争并进行部署。

如果在部署时完全覆盖,那么任何关于此类限制的官方文档参考都会有所帮助。谢谢。

java jboss war web.xml jboss-eap-6
1个回答
0
投票

Jboss EAP不支持像tomcat这样的context-param替换。但它确实支持部署WAR的内容替换。 解决方案 - 使用deployment-overlay命令替换web.xml。 Official documentation 因此,在用户端,需要web.xml模板,用户必须根据环境为context-param设置值并重新部署war。 war和web.xml必须在\ bin中。否则deployment-overlay命令无法识别路径。 命令序列 - 使用jboss-cli.bat -

[standalone@localhost:9990 /] deploy s1temp/myproj.war
[standalone@localhost:9990 /] deployment-overlay add --name=s1overlay --content=WEB-INF/web.xml=s1temp/web.xml
[standalone@localhost:9990 /] deployment-overlay link --name=s1overlay --deployments=myproj.war --redeploy-affected
© www.soinside.com 2019 - 2024. All rights reserved.