7 Replies Latest reply on Jan 13, 2012 3:52 AM by cvasilak

    EAR Deployment

    cvasilak

      Hi,

       

      I am trying to install an application using ear deployment. The ear consists of

       

      svc-rrd-model  (shared model classes)

      svc-rrd-service  (switchyard app)

       

      You can have a look of the source code here

       

      https://github.com/cvasilak/svc-rrd-parent

       

      When deploying as standalone the svc-rrd-service it deploys correctly. Trying to package the jar inside an ear I get the following exception:

      12:15:59,021 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-1) Starting deployment of "svc-rrd-ear-1.0-SNAPSHOT.ear"

      12:15:59,372 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-2) Starting deployment of "svc-rrd-service.jar"

      12:15:59,465 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-3) MSC00001: Failed to start service jboss.deployment.unit."svc-rrd-ear-1.0-SNAPSHOT.ear".POST_MODULE: org.jboss.msc.service.StartException in service jboss.deployment.unit."svc-rrd-ear-1.0-SNAPSHOT.ear".POST_MODULE: Failed to process phase POST_MODULE of deployment "svc-rrd-ear-1.0-SNAPSHOT.ear"

                at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:121) [jboss-as-server-7.1.0.CR1b.jar:7.1.0.CR1b]

                at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1824) [jboss-msc-1.0.1.GA.jar:1.0.1.GA]

                at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1759) [jboss-msc-1.0.1.GA.jar:1.0.1.GA]

                at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [:1.6.0_29]

                at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [:1.6.0_29]

                at java.lang.Thread.run(Thread.java:680) [:1.6.0_29]

      Caused by: java.lang.NullPointerException

                at org.switchyard.as7.extension.deployment.SwitchYardConfigProcessor.deploy(SwitchYardConfigProcessor.java:60)

                at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:115) [jboss-as-server-7.1.0.CR1b.jar:7.1.0.CR1b]

                ... 5 more

       

      12:15:59,697 INFO  [org.jboss.as.server] (DeploymentScanner-threads - 2) JBAS015856: Undeploy of deployment "svc-rrd-ear-1.0-SNAPSHOT.ear" was rolled back with failure message {"JBAS014671: Failed services" => {"jboss.deployment.unit.\"svc-rrd-ear-1.0-SNAPSHOT.ear\".POST_MODULE" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"svc-rrd-ear-1.0-SNAPSHOT.ear\".POST_MODULE: Failed to process phase POST_MODULE of deployment \"svc-rrd-ear-1.0-SNAPSHOT.ear\""}}

      12:15:59,761 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-1) Stopped deployment svc-rrd-service.jar in 63ms

      12:15:59,767 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-2) Stopped deployment svc-rrd-ear-1.0-SNAPSHOT.ear in 70ms

      12:15:59,768 INFO  [org.jboss.as.controller] (DeploymentScanner-threads - 2) JBAS014774: Service status report

      JBAS014777:   Services which failed to start:      service jboss.deployment.unit."svc-rrd-ear-1.0-SNAPSHOT.ear".POST_MODULE: org.jboss.msc.service.StartException in service jboss.deployment.unit."svc-rrd-ear-1.0-SNAPSHOT.ear".POST_MODULE: Failed to process phase POST_MODULE of deployment "svc-rrd-ear-1.0-SNAPSHOT.ear"

       

      12:15:59,769 ERROR [org.jboss.as.server.deployment.scanner] (DeploymentScanner-threads - 1) {"JBAS014653: Composite operation failed and was rolled back. Steps that failed:" => {"Operation step-2" => {"JBAS014671: Failed services" => {"jboss.deployment.unit.\"svc-rrd-ear-1.0-SNAPSHOT.ear\".POST_MODULE" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"svc-rrd-ear-1.0-SNAPSHOT.ear\".POST_MODULE: Failed to process phase POST_MODULE of deployment \"svc-rrd-ear-1.0-SNAPSHOT.ear\""}}}}

       

       

      The svc-service class contains an EJB (Routing class) and the svc-model contains some model classes shared by the ejb and the webapp(that will be bult later). Basically I am doing the ear because I want the model classes to be packaged as an external jar shared both by the ejb and the webapp.

       

      I am using jboss-as-7.1.0.CR1b/ (latest release) with the switchyard runtime installed by the switchyard-installer

       

      Any tips?

       

      Regards,

      Christos

        • 1. Re: EAR Deployment
          kcbabo

          My guess is there's a bug in our deployer for EAR deployments.  The stack trace points to an error trying to load switchyard.xml from the deployment archive.  Would you mind filing a JIRA?

           

          In terms of sharing classes between two deployments, you can do that without an EAR in AS 7.  You can deploy the shared model classes as a separate archive, then add a dependency on that deployments to each of your other deployments.  Rob has an example application which demonstrates this pattern.

           

          https://github.com/rcernich/quickstarts/tree/reporting_sample/demos/reporting

           

          The web and service modules in that application depend on the api module.  Check out the pom.xml for both web and service to see how the dependency is registered. 

           

          hth,

          keith

          • 2. Re: EAR Deployment
            cvasilak

            Hi Keith,

             

            From the pom.xml file I see that in the maven-jar plugin there is the following configuration

            <archive>

                        <manifestEntries>

                          <!-- Allows us to resolve reporting-api classes in AS7 -->

                          <Dependencies>deployment.reporting-api.jar</Dependencies>

                        </manifestEntries>

            </archive>


             

             

            Which produces in the MANIFEST.MF of the reporting-service.jar the following headers

            Dependencies: deployment.reporting-api.jar

            Class-Path: reporting-api-0.0.1-SNAPSHOT.jar

             

            I added the same configuration in my pom.xml. I have deployed the model.jar but when I am trying to deploy the service.jar I am getting

            java.lang.IllegalArgumentException: Given parent is not an ancestor of this virtual file

             

            I thought it was a misconfiguration of mine but when I tried the reporting example I get the same exception

             

            After deploying the reporting-api.jar first and then the reporting-service I get in the console.

             

            18:59:28,530 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-2) Starting deployment of "reporting-api-0.0.1-SNAPSHOT.jar"

            18:59:28,649 INFO  [org.jboss.weld] (MSC service thread 1-4) Processing CDI deployment: reporting-api-0.0.1-SNAPSHOT.jar

            18:59:28,712 INFO  [org.jboss.weld] (MSC service thread 1-4) Starting Services for CDI deployment: reporting-api-0.0.1-SNAPSHOT.jar

            18:59:28,898 INFO  [org.jboss.weld.Version] (MSC service thread 1-4) WELD-000900 1.1.4 (Final)

            18:59:28,921 INFO  [org.jboss.weld] (MSC service thread 1-4) Starting weld service

            18:59:29,668 INFO  [org.jboss.as.server] (DeploymentScanner-threads - 1) JBAS018559: Deployed "reporting-api-0.0.1-SNAPSHOT.jar"

            19:00:09,709 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-2) Starting deployment of "reporting-service-0.0.1-SNAPSHOT.jar"

            19:00:09,718 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-1) MSC00001: Failed to start service jboss.deployment.unit."reporting-service-0.0.1-SNAPSHOT.jar".STRUCTURE: org.jboss.msc.service.StartException in service jboss.deployment.unit."reporting-service-0.0.1-SNAPSHOT.jar".STRUCTURE: Failed to process phase STRUCTURE of deployment "reporting-service-0.0.1-SNAPSHOT.jar"

                      at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:121) [jboss-as-server-7.1.0.CR1b.jar:7.1.0.CR1b]

                      at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1824) [jboss-msc-1.0.1.GA.jar:1.0.1.GA]

                      at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1759) [jboss-msc-1.0.1.GA.jar:1.0.1.GA]

                      at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [:1.6.0_29]

                      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [:1.6.0_29]

                      at java.lang.Thread.run(Thread.java:680) [:1.6.0_29]

            Caused by: java.lang.IllegalArgumentException: Given parent is not an ancestor of this virtual file

                      at org.jboss.vfs.VirtualFile.getPathNameRelativeTo(VirtualFile.java:116)

                      at org.jboss.vfs.VirtualFile.getPathNameRelativeTo(VirtualFile.java:122)

                      at org.jboss.vfs.VirtualFile.getPathNameRelativeTo(VirtualFile.java:122)

                      at org.jboss.vfs.VirtualFile.getPathNameRelativeTo(VirtualFile.java:110)

                      at org.jboss.as.server.deployment.module.ManifestClassPathProcessor.createAdditionalModule(ManifestClassPathProcessor.java:193) [jboss-as-server-7.1.0.CR1b.jar:7.1.0.CR1b]

                      at org.jboss.as.server.deployment.module.ManifestClassPathProcessor.handlingExistingClassPathEntry(ManifestClassPathProcessor.java:185) [jboss-as-server-7.1.0.CR1b.jar:7.1.0.CR1b]

                      at org.jboss.as.server.deployment.module.ManifestClassPathProcessor.deploy(ManifestClassPathProcessor.java:160) [jboss-as-server-7.1.0.CR1b.jar:7.1.0.CR1b]

                      at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:115) [jboss-as-server-7.1.0.CR1b.jar:7.1.0.CR1b]

                      ... 5 more

             

            19:00:09,729 INFO  [org.jboss.as.server] (DeploymentScanner-threads - 1) JBAS015856: Undeploy of deployment "reporting-service-0.0.1-SNAPSHOT.jar" was rolled back with failure message {"JBAS014671: Failed services" => {"jboss.deployment.unit.\"reporting-service-0.0.1-SNAPSHOT.jar\".STRUCTURE" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"reporting-service-0.0.1-SNAPSHOT.jar\".STRUCTURE: Failed to process phase STRUCTURE of deployment \"reporting-service-0.0.1-SNAPSHOT.jar\""}}

            19:00:09,729 INFO  [org.jboss.as.controller] (DeploymentScanner-threads - 1) JBAS014774: Service status report

            JBAS014777:   Services which failed to start:      service jboss.deployment.unit."reporting-service-0.0.1-SNAPSHOT.jar".STRUCTURE: org.jboss.msc.service.StartException in service jboss.deployment.unit."reporting-service-0.0.1-SNAPSHOT.jar".STRUCTURE: Failed to process phase STRUCTURE of deployment "reporting-service-0.0.1-SNAPSHOT.jar"

             

            19:00:09,731 ERROR [org.jboss.as.server.deployment.scanner] (DeploymentScanner-threads - 2) {"JBAS014653: Composite operation failed and was rolled back. Steps that failed:" => {"Operation step-2" => {"JBAS014671: Failed services" => {"jboss.deployment.unit.\"reporting-service-0.0.1-SNAPSHOT.jar\".STRUCTURE" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"reporting-service-0.0.1-SNAPSHOT.jar\".STRUCTURE: Failed to process phase STRUCTURE of deployment \"reporting-service-0.0.1-SNAPSHOT.jar\""}}}}

            19:00:09,734 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-3) Stopped deployment reporting-service-0.0.1-SNAPSHOT.jar in 3ms

             

            Any help ?

             

            Regards

            Christos

             

            PS I will fill a JIRA for the EAR problem and I will post a link here

            • 3. Re: EAR Deployment
              rcernich

              Hey Christos,

               

              That technique (manifest.mf/Dependencies) is useful if you are not using EAR packaging.  That allows you to deploy the archives individually while allowing resolution of the external dependency.  At this point, you could consider it a work around until the SwitchYard deployment issue with EAR files is resolved.

               

              Best,

              Rob

              • 4. Re: EAR Deployment
                rcernich

                Missed this tidbit

                From the pom.xml file I see that in the maven-jar plugin there is the following configuration

                <archive>

                            <manifestEntries>

                              <!-- Allows us to resolve reporting-api classes in AS7 -->

                              <Dependencies>deployment.reporting-api.jar</Dependencies>

                            </manifestEntries>

                </archive>


                 

                The example code references a jar deployed as "reporting-api.jar". You need to modify that to point to your specific shared module.

                 

                Best,

                Rob

                • 5. Re: EAR Deployment
                  cvasilak

                  Hi Rob

                   

                  I tried adding the specific jar version e.g.

                   

                  <archive>

                            <manifest>

                                      <addClasspath>true</addClasspath>

                            </manifest>

                            <manifestEntries>

                                      <!-- Allows us to resolve svc-rrd-model classes in AS7 -->

                                      <Dependencies>deployment.svc-rrd-model-1.0-SNAPSHOT.jar</Dependencies>

                            </manifestEntries>

                  </archive>

                   

                  but I got the same error

                  Caused by: java.lang.IllegalArgumentException: Given parent is not an ancestor of this virtual file

                   

                  Regards,

                  Christos

                  • 6. Re: EAR Deployment
                    cvasilak

                    After removing the  <addClasspath>true</addClasspath> it worked!

                     

                    I am going to get myself a beer now!

                     

                    Regards,

                    Christos

                    • 7. Re: EAR Deployment
                      cvasilak

                      just for completeness of this thread, the JIRA issue is

                       

                      https://issues.jboss.org/browse/SWITCHYARD-612

                       

                      Regards