我们的应用程序在 JBoss 6 EAP 和 7 Community 上运行不变。现在我们想要添加对 WildFly 9 的支持,我们发现我们需要更改打包在应用程序 WAR 中的各种 JBoss 部署描述符(jboss-deployment-struct.xml、jboss-scanning.xml、jboss-web.xml)使应用程序在 WildFly 9 上运行。不幸的是,这些更改似乎破坏了我们的应用程序与旧版 JBoss 版本的向后兼容性。
是否有办法在单个 WAR 存档中包含多个 JBoss 部署描述符版本,以便每个 JBoss 版本选择它可以支持的最高版本?
我们的目标是拥有一个可以在 JBoss 6.x EAP、JBoss 7.x Community 以及 WildFly 8.x 和 9.x 上不变运行的单一应用程序 WAR。
最佳答案
不幸的是,目前无法使用单个 jboss-deployment-struct.xml 文件来完成此操作。
我的团队已采取以下方法之一来解决此问题:
创建一个安装在每个应用服务器中的自定义模块,并使 jboss-deployment-struct 文件仅引用此自定义模块。
为您希望部署的每个应用程序服务器都有一个单独的 Maven 配置文件。这并不理想,因为它会为不同的服务器生成不同的 war 文件。这对于其他文件(例如 beans.xml 或 web.xml)也需要更改的项目来说是必要的。
关于java - 单个 WAR 中的多个 JBoss/WildFly 部署描述符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32705938/