missing dependency issues on multiple jars
armahdi Jun 8, 2016 8:26 PMI have a bit of a large or complex project. In the ear I have 2 ejb jars, 2 rars and one war which are subdeployments and besides that there are like some other jars that are dependencies for projects. the 2 ejb jars depend on two jars that use a jar Common-EJB-2.0.jar. this Common-EJB-2.0.jar is in the root of the ear where the rest of the jars and war are also placed. The error that comes when i deploy this ear is:
09:24:38,315 ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) WFLYCTL0013: Operation ("deploy") failed - address: ([("deployment" => "RTMManagerServices-ear-4.2.5.ear")]) - failure description: {"WFLYCTL0180: Services with missing/unavailable dependencies" => [
"jboss.module.service.\"deployment.RTMlink-DataAccess-4.2.5.jar\".main is missing [module.resolved.service.\"deployment.RTMlink-DataAccess-4.2.5.jar\".main, jboss.module.spec.service.\"deployment.RTMManagerServices-ear-4.2.5.ear.BRTManager-DataAccess-4.2.5.jar\".main, jboss.module.spec.service.\"deployment.RTMManagerServices-ear-4.2.5.ear.Common-EJB-2.0.jar\".main, jboss.module.spec.service.\"deployment.RTMManagerServices-ear-4.2.5.ear.RTMlink-DataAccess-4.2.5.jar\".main]",
"jboss.module.resolve.phase.\"deployment.RTMManagerServices-ear-4.2.5.ear.RTMlinkServices-4.2.5.jar\".main.1 is missing [jboss.module.spec.service.\"deployment.RTMManagerServices-ear-4.2.5.ear.Common-EJB-2.0.jar\".main, jboss.module.spec.service.\"deployment.RTMManagerServices-ear-4.2.5.ear.RTMlink-DataAccess-4.2.5.jar\".main]",
"jboss.module.service.\"deployment.BRTManager-DataAccess-4.2.5.jar\".main is missing [module.resolved.service.\"deployment.BRTManager-DataAccess-4.2.5.jar\".main, jboss.module.spec.service.\"deployment.RTMManagerServices-ear-4.2.5.ear.BRTManager-DataAccess-4.2.5.jar\".main, jboss.module.spec.service.\"deployment.RTMManagerServices-ear-4.2.5.ear.Common-EJB-2.0.jar\".main, jboss.module.spec.service.\"deployment.RTMManagerServices-ear-4.2.5.ear.RTMlink-DataAccess-4.2.5.jar\".main]",
"jboss.module.resolve.phase.\"deployment.RTMManagerServices-ear-4.2.5.ear\".main.1 is missing [jboss.module.spec.service.\"deployment.RTMManagerServices-ear-4.2.5.ear.BRTManager-DataAccess-4.2.5.jar\".main, jboss.module.spec.service.\"deployment.RTMManagerServices-ear-4.2.5.ear.RTMlink-DataAccess-4.2.5.jar\".main]",
"jboss.module.service.\"deployment.RTMManagerServices-ear-4.2.5.ear.BRTManagerEisConnector-4.2.5.rar\".main is missing [module.resolved.service.\"deployment.RTMManagerServices-ear-4.2.5.ear.BRTManagerEisConnector-4.2.5.rar\".main]",
"jboss.module.resolve.phase.\"deployment.BRTManager-DataAccess-4.2.5.jar\".main.1 is missing [jboss.module.spec.service.\"deployment.RTMManagerServices-ear-4.2.5.ear.BRTManager-DataAccess-4.2.5.jar\".main, jboss.module.spec.service.\"deployment.RTMManagerServices-ear-4.2.5.ear.Common-EJB-2.0.jar\".main, jboss.module.spec.service.\"deployment.RTMManagerServices-ear-4.2.5.ear.RTMlink-DataAccess-4.2.5.jar\".main]",
"jboss.module.resolve.phase.\"deployment.RTMManagerServices-ear-4.2.5.ear.RTMManager-XmlAdapter-4.2.5.war\".main.2 is missing [jboss.module.spec.service.\"deployment.RTMManagerServices-ear-4.2.5.ear.BRTManager-DataAccess-4.2.5.jar\".main, jboss.module.spec.service.\"deployment.RTMManagerServices-ear-4.2.5.ear.RTMlink-DataAccess-4.2.5.jar\".main, jboss.module.spec.service.\"deployment.RTMManagerServices-ear-4.2.5.ear.Common-EJB-2.0.jar\".main]",
"jboss.module.resolve.phase.\"deployment.RTMManagerServices-ear-4.2.5.ear.RTMlinkEisConnector-4.2.5.rar\".main.2 is missing [jboss.module.spec.service.\"deployment.RTMManagerServices-ear-4.2.5.ear.BRTManager-DataAccess-4.2.5.jar\".main, jboss.module.spec.service.\"deployment.RTMManagerServices-ear-4.2.5.ear.RTMlink-DataAccess-4.2.5.jar\".main, jboss.module.spec.service.\"deployment.RTMManagerServices-ear-4.2.5.ear.Common-EJB-2.0.jar\".main]",
"jboss.module.resolve.phase.\"deployment.RTMManagerServices-ear-4.2.5.ear.BRTManagerServices-4.2.5.jar\".main.1 is missing [jboss.module.spec.service.\"deployment.RTMManagerServices-ear-4.2.5.ear.BRTManager-DataAccess-4.2.5.jar\".main, jboss.module.spec.service.\"deployment.RTMManagerServices-ear-4.2.5.ear.Common-EJB-2.0.jar\".main]",
"jboss.module.resolve.phase.\"deployment.RTMManagerServices-ear-4.2.5.ear.BRTManagerEisConnector-4.2.5.rar\".main.2 is missing [jboss.module.spec.service.\"deployment.RTMManagerServices-ear-4.2.5.ear.BRTManager-DataAccess-4.2.5.jar\".main, jboss.module.spec.service.\"deployment.RTMManagerServices-ear-4.2.5.ear.RTMlink-DataAccess-4.2.5.jar\".main, jboss.module.spec.service.\"deployment.RTMManagerServices-ear-4.2.5.ear.Common-EJB-2.0.jar\".main]",
"jboss.module.service.\"deployment.RTMManagerServices-ear-4.2.5.ear\".main is missing [jboss.module.spec.service.\"deployment.RTMManagerServices-ear-4.2.5.ear.BRTManager-DataAccess-4.2.5.jar\".main, jboss.module.spec.service.\"deployment.RTMManagerServices-ear-4.2.5.ear.RTMlink-DataAccess-4.2.5.jar\".main, module.resolved.service.\"deployment.RTMManagerServices-ear-4.2.5.ear\".main]",
"jboss.module.service.\"deployment.RTMManagerServices-ear-4.2.5.ear.RTMManager-XmlAdapter-4.2.5.war\".main is missing [module.resolved.service.\"deployment.RTMManagerServices-ear-4.2.5.ear.RTMManager-XmlAdapter-4.2.5.war\".main]",
"jboss.module.resolve.phase.\"deployment.RTMlink-DataAccess-4.2.5.jar\".main.1 is missing [jboss.module.spec.service.\"deployment.RTMManagerServices-ear-4.2.5.ear.BRTManager-DataAccess-4.2.5.jar\".main, jboss.module.spec.service.\"deployment.RTMManagerServices-ear-4.2.5.ear.Common-EJB-2.0.jar\".main, jboss.module.spec.service.\"deployment.RTMManagerServices-ear-4.2.5.ear.RTMlink-DataAccess-4.2.5.jar\".main]",
"jboss.module.service.\"deployment.RTMManagerServices-ear-4.2.5.ear.RTMlinkEisConnector-4.2.5.rar\".main is missing [module.resolved.service.\"deployment.RTMManagerServices-ear-4.2.5.ear.RTMlinkEisConnector-4.2.5.rar\".main]",
"jboss.module.service.\"deployment.RTMManagerServices-ear-4.2.5.ear.RTMlinkServices-4.2.5.jar\".main is missing [module.resolved.service.\"deployment.RTMManagerServices-ear-4.2.5.ear.RTMlinkServices-4.2.5.jar\".main, jboss.module.spec.service.\"deployment.RTMManagerServices-ear-4.2.5.ear.Common-EJB-2.0.jar\".main, jboss.module.spec.service.\"deployment.RTMManagerServices-ear-4.2.5.ear.RTMlink-DataAccess-4.2.5.jar\".main]",
"jboss.module.service.\"deployment.RTMManagerServices-ear-4.2.5.ear.BRTManagerServices-4.2.5.jar\".main is missing [jboss.module.spec.service.\"deployment.RTMManagerServices-ear-4.2.5.ear.BRTManager-DataAccess-4.2.5.jar\".main, jboss.module.spec.service.\"deployment.RTMManagerServices-ear-4.2.5.ear.Common-EJB-2.0.jar\".main, module.resolved.service.\"deployment.RTMManagerServices-ear-4.2.5.ear.BRTManagerServices-4.2.5.jar\".main]"
I have introduced a jboss-deployment-structure.xml in the src/main/application/META-INF/ folder and the contents so far are:
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
<deployment>
<dependencies>
<module name="deployment.RTMManagerServices-ear-4.2.5.ear.BRTManager-DataAccess-4.2.5.jar" />
<module name="deployment.RTMManagerServices-ear-4.2.5.ear.RTMlink-DataAccess-4.2.5.jar" />
</dependencies>
</deployment>
<sub-deployment name="BRTManagerServices-4.2.5.jar">
<!-- This corresponds to the module for a web deployment -->
<!-- it can use all the same tags as the deployment entry above -->
<dependencies>
<!-- Adds a dependency on a ejb jar. This could also be done with a Class-Path entry -->
<module name="deployment.RTMManagerServices-ear-4.2.5.ear.BRTManager-DataAccess-4.2.5.jar" />
<module name="deployment.RTMManagerServices-ear-4.2.5.ear.Common-EJB-2.0.jar" />
</dependencies>
<!-- Set's local resources to have the lowest priority -->
<!-- If the same class is both in the sub deployment and in another sub deployment that -->
<!-- is visible to the war, then the Class from the other deployment will be loaded, -->
<!-- rather than the class actually packaged in the war. -->
<!-- This can be used to resolve ClassCastExceptions if the same class is in multiple sub deployments-->
<local-last value="true" />
</sub-deployment>
<sub-deployment name="RTMlinkServices-4.2.5.jar">
<!-- This corresponds to the module for a web deployment -->
<!-- it can use all the same tags as the deployment entry above -->
<dependencies>
<!-- Adds a dependency on a ejb jar. This could also be done with a Class-Path entry -->
<module name="deployment.RTMManagerServices-ear-4.2.5.ear.RTMlink-DataAccess-4.2.5.jar" />
<module name="deployment.RTMManagerServices-ear-4.2.5.ear.Common-EJB-2.0.jar" />
</dependencies>
<!-- Set's local resources to have the lowest priority -->
<!-- If the same class is both in the sub deployment and in another sub deployment that -->
<!-- is visible to the war, then the Class from the other deployment will be loaded, -->
<!-- rather than the class actually packaged in the war. -->
<!-- This can be used to resolve ClassCastExceptions if the same class is in multiple sub deployments-->
<local-last value="true" />
</sub-deployment>
<module name="deployment.RTMlink-DataAccess-4.2.5.jar">
<dependencies>
<!-- Adds a dependency on a ejb jar. This could also be done with a Class-Path entry
-->
<module name="deployment.RTMManagerServices-ear-4.2.5.ear.Common-EJB-2.0.jar" />
</dependencies>
</module>
<module name="deployment.BRTManager-DataAccess-4.2.5.jar">
<dependencies>
<!-- Adds a dependency on a ejb jar. This could also be done with a Class-Path entry
-->
<module name="deployment.RTMManagerServices-ear-4.2.5.ear.Common-EJB-2.0.jar" />
</dependencies>
</module>
</jboss-deployment-structure>
I was hoping that i could remove the Common-EJB-2.0.jar errors with the above xml but it didnot go away. I would want to understand two things what do these two lines mean in the above given error:
Is it saying the the RTMManager-XmlAdapter-4.2.5.war is missing BRTManager-DataAccess-4.2.5.jar & RTMlink-DataAccess-4.2.5.jar which in turn are collectively missing Common-EJB-2.0.jar
"jboss.module.resolve.phase.\"deployment.RTMManagerServices-ear-4.2.5.ear.RTMManager-XmlAdapter-4.2.5.war\".main.2 is missing [jboss.module.spec.service.\"deployment.RTMManagerServices-ear-4.2.5.ear.BRTManager-DataAccess-4.2.5.jar\".main, jboss.module.spec.service.\"deployment.RTMManagerServices-ear-4.2.5.ear.RTMlink-DataAccess-4.2.5.jar\".main, jboss.module.spec.service.\"deployment.RTMManagerServices-ear-4.2.5.ear.Common-EJB-2.0.jar\".main]",
I do not want to go towards a global module. I might try it but would that be a bad of way of solving this.
And what does this mean:
,"jboss.module.service.\"deployment.RTMManagerServices-ear-4.2.5.ear.RTMManager-XmlAdapter-4.2.5.war\".main is missing [module.resolved.service.\"deployment.RTMManagerServices-ear-4.2.5.ear.RTMManager-XmlAdapter-4.2.5.war\".main]",
the war is missing itself as a dependency?
The difference i see in both is jboss.module.resolve.phase(ear.war) is missing jboss.module.spec.service(jar) is missing jboss.module.spec.service(Common-EJB-2.0.jar) and the other one is jboss.module.spec.service is missing : module.resolved.service. and I do not understand these notations.