【发布时间】:2015-04-04 06:41:15
【问题描述】:
使用 Wildfly 8.2.0.Final、Windows 7、JBoss Developer Studio 8.0.2.GA。
我们正在尝试将我们的战争拆分为模块。似乎最自然的方法是依靠 web 片段 + JSF/Facelet 能力在 war/WEB-INF/lib jars 中查找资源。
问题是对 xhtml facelet 模板和静态资源的更改不会即时应用,因为如果相同的东西位于战争本身,就会发生这种情况。
据我了解是因为:
- 片段 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 时。
问题。
- 某处是否存在错误?虚拟文件系统?暗流?我不确定所描述的行为是否有意。
- Wildfly 是否应该支持在战争库中热部署资源? IE。合理吗?
- 如何使用 Wildfly 8.2.0.Final 实现此功能?
- 替代 Undertow 的战争部署 ResourceManager,以某种方式修改 getResource?
- 对 VFS.mounts 做些什么?什么?
- 放弃这种方法。取而代之的是把这些war子模块做成ear级别的EJB,这样它们就会被爆炸式地部署。添加这些“EJB”作为战争部署资源根,就像 WarStructureDeploymentProcessor 一样。
【问题讨论】:
-
似乎在 Wildfly 8.2 中有一种方法可以使用 JAR 中的标签库,这些标签库位于 EAR 中,WAR 旁边:issues.jboss.org/browse/WFLY-1172
-
不确定 JBoss Developer Studio,但这一切对我来说都适用于普通的 Eclipse + JRebel(和 Maven,但它在这里不起作用),部署到 WildFly 时也是如此。也许你应该试试 JRebel 看看它是否能解决你的问题。
-
刚刚试过,如果片段项目是通过部署程序集引用的,即使没有 JRebel 的我也可以使用。
-
@BalusC,你有 EAR\WAR\JAR 结构吗? WAR 的部署程序集中引用了 JAR? JAR 中对 XHTML 的更改会在运行时反映在 UI 中吗?
标签: eclipse jakarta-ee jboss wildfly wildfly-8