使用 Wildfly 8.2.0.Final、Windows 7、JBoss Developer Studio 8.0.2.GA。
我们正在尝试将我们的 war 分成多个模块。似乎最自然的方法是依靠 Web 片段 + JSF/Facelet 能力在 war/WEB-INF/lib jar 中查找资源。
问题在于,对 xhtml Facelet 模板和静态资源的更改不会即时应用,因为如果相同的内容位于 war 本身中,就会发生这种情况。
据我了解,这是因为:
- 片段 jar 是通过 IDE 打包部署的,而不是分解;
- VFS 在 tmp 目录中创建 jar 的副本,然后将其解压;
VFS3 User Guide表示“只要有可能,JavaZipFileSystem 就会尝试使用 JarEntry 来支持文件系统操作。如果不可能,它将把 JarEntry 的副本写入临时目录”。我不明白这个“当不可能时”是什么意思,单步执行 org.wildfly.extension.undertow.deployment.WarStructureDeploymentProcessor 代码似乎总是会创建一个 jar 副本。 - org.jboss.vfs.spi.JavaZipFileSystem 似乎试图查看 jar 的最后修改时间,但它查看的是副本,而不是原始版本; JBoss Developer Studio 无论如何都不会更改原始 jar 的最后修改时间,例如更新 xhtml 时。
问题。
- 有什么地方存在错误吗?虚拟FS?暗流?我不确定所描述的行为是否是有意为之。
- Wildfly 是否应该支持 war 库中的热部署资源? IE。合理吗?
- 如何使用 Wildfly 8.2.0.Final 实现此功能?
- 替换 Undertow 的 war 部署 ResourceManager,以某种方式修改 getResource?
- 对 VFS.mounts 做些什么?什么?
- 放弃这种方法。相反,将这些 war 子模块制作成耳级的 EJB,这样它们就会爆炸式部署。添加这些“EJB”作为 war 部署资源根,就像 WarStructureDeploymentProcessor 所做的那样。
最佳答案
最终在 JBIDE-20071 Allow deploying exploded jars to war/WEB-INF/lib 中解决了这个问题,这样 JBoss Tools 就会部署爆炸的 web 片段。 Web 片段被打包部署,只是因为之前 JBoss AS7 中存在错误 ( AS7-4704 )。
关于eclipse - 在 war 库中热部署资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28326523/