目前,我正在测试耳内部署的多战模块。
基本上我有两个依赖的战争:hibernate-validator,它进一步依赖于:javax.validation.api并包含ValidatorFactory。我认为这也会导致jca子系统的激活。
我不明白为什么我会得到:
Caused by: org.jboss.msc.service.DuplicateServiceException: Service jboss.naming.context.java.module.xxx-ear.cmp.ValidatorFactory is already registered"},
据我所知,我已经在两场不同的战争中定义了它们但是它们不应该被隔离?
我还尝试在ear的meta-inf文件夹中添加jboss-deployment-structure.xml,其中包含:
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
<!-- Make sub deployments isolated by default, so they cannot see each others
classes without a Class-Path entry -->
<ear-subdeployments-isolated>true</ear-subdeployments-isolated>
<deployment>
<exclusions>
<module name="javax.validation.api" />
</exclusions>
</deployment>
<sub-deployment name="xxx-api.war">
<exclusions>
<module name="javax.validation.api" />
</exclusions>
<exclude-subsystems>
<subsystem name="jca" />
</exclude-subsystems>
</sub-deployment>
<sub-deployment name="xxx-web.war">
<exclusions>
<module name="javax.validation.api" />
</exclusions>
</sub-deployment>
</jboss-deployment-structure>
我尝试在部署和子部署中排除jar - 失败。我也尝试在主要部署或子部署中排除整个子系统也失败了。
知道如何解决这类问题吗?如果我有两个战争将依赖的另一个罐子怎么办呢?那么从这个案例我认为我也会遇到类似的问题。
答案 0 :(得分:0)
这个问题与pom和jboss-deployment-structure无关,而是与web.xml有关。我不小心在两次战争中都设置了相同的模块名称,从而导致名称冲突。名称与包名称相同,因此错误让我感到困惑。如果有人遇到同样的问题,请先检查你的web.xml。