目标-使用针对web.xml中的context-param参数提供的新值在Jboss EAP 6.4上部署项目战,而无需编辑现有战。
当前状态-
我的默认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>
问题排查-
由于我们将相同的战争发送给客户,因此决定不让客户编辑战争并部署。
如果在部署时根本无法覆盖,则任何有关此类限制的官方文档参考都将有所帮助。 谢谢。
答案 0 :(得分:0)
Jboss EAP不支持tomcat之类的上下文参数替换。但是它确实支持已部署的WAR的内容替换。
解决方案-使用deployment-overlay
命令替换web.xml。
Official documentation
因此,在用户端需要web.xml模板,并且用户必须根据其环境放置context-param的值,然后重新部署战争。
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