我有2个战争(比如A和B)和1个jar(C)。如何在两次战争之间共享一个依赖(jar)在JBoss中
两个A.war和B.war取决于罐C.由于罐子C包含单身,只能有1 C,为共享和B.
我建立与行家每个部署没有任何问题。无论是从A和B的POM包含:
<dependency>
<groupId>C</groupId>
<artifactId>C</artifactId>
<version>1.0</version>
<scope>provided</scope>
</dependency>
当我尝试将部署添加到JBoss(手动,通过管理控制台),C和A给我任何问题,而B抛出错误:
outcome 'failed', "JBAS014671: Failed services".
StartException in service jboss.undertow.deployment.default-server.default-host./b: Failed to start service
Caused by: java.lang.LinkageError: failed to link [class from B] (Module "B.war:main" from Service Module Loader)
Caused by: java.lang.NoClassDefFoundError: [class from jar C]
Caused by: java.lang.ClassNotFoundException: [class from jar C] from (Module "B.war:main" from Service Module Loader)
所以基本上:JBoss无法解决从B.war到C.jar的依赖关系。 我已经加入Maven的战争插件A和B以及Maven的JAR-插件C.
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
</manifest>
<manifestEntries>
<Dependencies>org.slf4j</Dependencies>
</manifestEntries>
</archive>
</configuration>
</plugin>
</plugins>
</build>
所以基本上我想有一个共享的项目(JAR)在JBoss中下A和B 。我使用IntelliJ IDEA 14.1.5和JBoss Wildfly 8.2.1。 C的lib不能添加到A或B中。
我在想什么/错在哪里?如何实现这一目标?
我一开始就这样做了,但是C包含带缓存的单例,并且这会导致同时有两个缓存(一个用于A,另一个用于B)。所以只能有一个C的实例(也是明智的)。有没有可能将URL映射保存在.ear文件中?因为将来我会根据C进行另一场前端战争(所以1个webservice,2个前端和1个核心)。我会看看jboss中的模块。 –