问题描述
我在使用wildfly类加载时遇到了一个非常奇怪的问题。我有一个Java-ee webapp,结构如下:
some.ear
+- some.war
+- EJBs.jar
战争和罐子都需要一些弹簧类才能正常运行。我定义了一个包含相关类的spring模块。在jboss-deployment-structure
中,我有一个部分如下:
<jboss-deployment-structure>
<deployment>
<dependencies>
...
<module name="org.springframework.spring-web"/>
...
</dependencies>
</deployment>
启动我的Web应用程序后,在部署战争存档时会收到ClassNotFoundException
。
如果我添加其他部分
<sub-deployment name="some.war">
<dependencies>
...
<module name="org.springframework.spring-web"/>
...
</dependencies>
</sub-deployment>
有效。
我的理解是,主部署部分中的每个模块在所有子部署中也应该可见。
有人可以阐明这个问题吗?
解决方法
每个子部署都需要它自己的一组模块依赖项。如果要在EAR/lib
目录中包含模块库而不是创建模块,则不需要为每个子部署添加模块依赖项。