Wildfly 模块类加载
Wildfly module classloading
我遇到了一个关于 wildfly 类加载的相当奇怪的问题。我有一个 java-ee webapp,结构如下:
some.ear
+- some.war
+- EJBs.jar
war 和 jar 都需要 spring 类 才能正常运行。我定义了一个包含相关 类 的 spring 模块。在 jboss-deployment-structure
我有一个部分如下:
<jboss-deployment-structure>
<deployment>
<dependencies>
...
<module name="org.springframework.spring-web"/>
...
</dependencies>
</deployment>
启动我的 webapp 后,我在部署 war-archive 时得到一个 ClassNotFoundException
。
如果我添加一个额外的部分
<sub-deployment name="some.war">
<dependencies>
...
<module name="org.springframework.spring-web"/>
...
</dependencies>
</sub-deployment>
有效。
我的理解是,主部署部分的每个模块也应该在所有子部署中可见。
任何人都可以阐明这个问题吗?
每个 sub-deployment 都需要它自己的一组模块依赖项。如果您要在 EAR/lib
目录中包含模块库而不是创建模块,那么您不需要为每个 sub-deployment.
添加模块依赖项
我遇到了一个关于 wildfly 类加载的相当奇怪的问题。我有一个 java-ee webapp,结构如下:
some.ear
+- some.war
+- EJBs.jar
war 和 jar 都需要 spring 类 才能正常运行。我定义了一个包含相关 类 的 spring 模块。在 jboss-deployment-structure
我有一个部分如下:
<jboss-deployment-structure>
<deployment>
<dependencies>
...
<module name="org.springframework.spring-web"/>
...
</dependencies>
</deployment>
启动我的 webapp 后,我在部署 war-archive 时得到一个 ClassNotFoundException
。
如果我添加一个额外的部分
<sub-deployment name="some.war">
<dependencies>
...
<module name="org.springframework.spring-web"/>
...
</dependencies>
</sub-deployment>
有效。
我的理解是,主部署部分的每个模块也应该在所有子部署中可见。
任何人都可以阐明这个问题吗?
每个 sub-deployment 都需要它自己的一组模块依赖项。如果您要在 EAR/lib
目录中包含模块库而不是创建模块,那么您不需要为每个 sub-deployment.