我正在使用非常标准的堆栈(Java 8、JAX-RS、Hibernate 等)为 Wildfly 9 开发一个 Web 应用程序。
现在我必须使用第三方库,它对 Log4j 等库版本有各种依赖关系。由于我不想分析这些依赖关系是否与当前 web-app 中的库兼容,我认为它会是在 Wildfly 中定义模块是个好主意。就像是
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.0" name="foo.md">
<resources>
<resource-root path="foo-1.0.jar" />
<resource-root path="log4j-1.2.12" />
<resource-root path="concurrent-1.0.jar" />
<!-- etc -->
</resources>
</module>
然后我可以使用 jboss-deployment-structure.xml 包含模块
<?xml version="1.0"?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
<deployment>
<dependencies>
<module name="foo.md" >
<imports>
<include path="foo" />
<exclude path="bar" />
</imports>
</module>
</dependencies>
</deployment>
这样,我可以隔离第三方库的依赖关系,并且不必分析它们是否与我的应用程序兼容,而无需使用 OSGi 之类的(imo 重量级)方法,这需要对应用程序进行更多更改或等待拼图。
这是一种有效的方法吗?