Nuxeo Enterprise Platform
  1. Nuxeo Enterprise Platform
  2. NXP-1759

Integrate the JAXWS based Web Services in Nuxeo build system

    Details

    • Type: Task Task
    • Status: Resolved Resolved
    • Severity: Minor Minor
    • Resolution: Fixed
    • Affects Version/s: 5.2 M1
    • Fix Version/s: 5.1.3
    • Component/s: None
    • Environment:
      JBoss 4.0.5.GA, JAXWS 2.1.2-20070917, Ubuntu Feisty 7.04

      Description

      In order to run a JAXWS application, JBoss have to be updated. For that, the Metro 1.0 and JAXWS 2.1.2-20070917 jars have to be copied in the Tomcat/shared/lib directory.

      The project nuxeo-platform-ws-jaxws is currently located in sandbox. It can be built / deployed using specific scripts. The usual steps are:
      1. Compile the written java files and produce the class files.
      2. Run a task to generate the java files denoting the specific WS annotations
      3. Compile the generated java files and produce the class files
      4. Pack the class files (together with the MANIFEST and OSGI files) in a jar
      5. Deploy the jar into nuxeo.ear/platform.

      Currently, the step 2 can be achieved using apt or wsgen with similar results.

      • In the build.xml located in the root of nuxeo-platform-ws-jaxws project the task apt is producing the wanted results.
      • Running maven build in the root of nuxeo-platform-ws-jaxws project fails:
        [INFO] [compiler:compile]
        [INFO] Compiling 13 source files to /home/rux/nuxeo-sources/trunk/nuxeo-platform-ws-jaxws/target/classes
        [WARNING] POM for 'com.sun.xml.stream.buffer:streambuffer:pom:0.4:runtime' is invalid. It will be ignored for artifact resolution. Reason: Failed to validate POM for project com.sun.xml.stream.buffer:streambuffer at Artifact [com.sun.xml.stream.buffer:streambuffer:pom:0.4:runtime]
        [WARNING] POM for 'org.jvnet.staxex:stax-ex:pom:1.0:runtime' is invalid. It will be ignored for artifact resolution. Reason: Not a v4.0.0 POM. for project org.jvnet.staxex:stax-ex at /home/rux/.m2/repository/org/jvnet/staxex/stax-ex/1.0/stax-ex-1.0.pom
        [INFO] [jaxws:wsgen {execution: wsgenAccess}

        ]
        Problem encountered during annotation processing;
        see stacktrace below for more information.
        java.lang.annotation.IncompleteAnnotationException: javax.jws.WebMethod missing element exclude
        at sun.reflect.annotation.AnnotationInvocationHandler.invoke(AnnotationInvocationHandler.java:53)
        at $Proxy4.exclude(Unknown Source)
        at com.sun.tools.ws.processor.modeler.annotation.WebServiceVisitor.hasWebMethods(WebServiceVisitor.java:329)
        at com.sun.tools.ws.processor.modeler.annotation.WebServiceVisitor.shouldProcessWebService(WebServiceVisitor.java:305)
        at com.sun.tools.ws.processor.modeler.annotation.WebServiceVisitor.visitClassDeclaration(WebServiceVisitor.java:109)
        at com.sun.tools.apt.mirror.declaration.ClassDeclarationImpl.accept(ClassDeclarationImpl.java:95)
        at com.sun.tools.ws.processor.modeler.annotation.WebServiceAP.buildModel(WebServiceAP.java:311)
        at com.sun.tools.ws.processor.modeler.annotation.WebServiceAP.process(WebServiceAP.java:252)
        at com.sun.mirror.apt.AnnotationProcessors$CompositeAnnotationProcessor.process(AnnotationProcessors.java:60)
        at com.sun.tools.apt.comp.Apt.main(Apt.java:454)
        at com.sun.tools.apt.main.JavaCompiler.compile(JavaCompiler.java:448)
        at com.sun.tools.apt.main.Main.compile(Main.java:1075)
        at com.sun.tools.apt.main.Main.compile(Main.java:938)
        at com.sun.tools.apt.Main.processing(Main.java:95)
        at com.sun.tools.apt.Main.process(Main.java:85)
        at com.sun.tools.apt.Main.process(Main.java:67)
        at com.sun.tools.ws.wscompile.WsgenTool.buildModel(WsgenTool.java:161)
        at com.sun.tools.ws.wscompile.WsgenTool.run(WsgenTool.java:89)
        at com.sun.tools.ws.WsGen.doMain(WsGen.java:55)
        at org.codehaus.mojo.jaxws.AbstractWsGenMojo.execute(AbstractWsGenMojo.java:91)
        at org.codehaus.mojo.jaxws.MainWsGenMojo.execute(MainWsGenMojo.java:14)
        at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:443)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:539)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:480)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:459)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:311)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:278)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:143)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:334)
        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:125)
        at org.apache.maven.cli.MavenCli.main(MavenCli.java:280)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
        at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
        at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
        at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
        error: compilation failed, errors should have been reported
        [INFO] ------------------------------------------------------------------------
        [ERROR] BUILD ERROR
        [INFO] ------------------------------------------------------------------------

      Apparently, there is a conflict in the classpath used. Running wsgen from shell with the command line
      rux@sendero:~/nuxeo-sources/trunk/nuxeo-platform-ws-jaxws$ wsgen -d /home/rux/nuxeo-sources/trunk/nuxeo-platform-ws-jaxws/target/classes -cp /home/rux/nuxeo-sources/trunk/nuxeo-platform-ws-jaxws/target/classes:/home/rux/.m2/repository/org/nuxeo/ecm/platform/nuxeo-platform-api/5.2-SNAPSHOT/nuxeo-platform-api-5.2-SNAPSHOT.jar:/home/rux/.m2/repository/org/nuxeo/ecm/platform/nuxeo-platform-ws/5.2-SNAPSHOT/nuxeo-platform-ws-5.2-SNAPSHOT.jar:/home/rux/.m2/repository/org/nuxeo/ecm/platform/nuxeo-platform-audit-client/5.2-SNAPSHOT/nuxeo-platform-audit-client-5.2-SNAPSHOT.jar:/home/rux/.m2/repository/org/nuxeo/ecm/platform/nuxeo-platform-versioning-api/5.2-SNAPSHOT/nuxeo-platform-versioning-api-5.2-SNAPSHOT.jar:/home/rux/.m2/repository/org/nuxeo/ecm/core/nuxeo-core-schema/1.4-SNAPSHOT/nuxeo-core-schema-1.4-SNAPSHOT.jar:/home/rux/.m2/repository/commons-codec/commons-codec/1.3/commons-codec-1.3.jar:/home/rux/.m2/repository/javax/xml/bind/jaxb-api/2.1.2-20070917/jaxb-api-2.1.2-20070917.jar:/home/rux/.m2/repository/commons-lang/commons-lang/2.2/commons-lang-2.2.jar:/home/rux/.m2/repository/javax/xml/ws/jaxws-api/2.1.2-20070917/jaxws-api-2.1.2-20070917.jar:/home/rux/.m2/repository/commons-logging/commons-logging-api/1.1/commons-logging-api-1.1.jar:/home/rux/.m2/repository/com/sun/xml/xsom/20060306/xsom-20060306.jar:/home/rux/.m2/repository/com/sun/xml/ws/jaxws-rt/2.1.2-20070917/jaxws-rt-2.1.2-20070917.jar:/home/rux/.m2/repository/org/nuxeo/ecm/platform/nuxeo-platform-audit-api/5.2-SNAPSHOT/nuxeo-platform-audit-api-5.2-SNAPSHOT.jar:/home/rux/.m2/repository/org/nuxeo/ecm/platform/nuxeo-platform-url-core/5.2-SNAPSHOT/nuxeo-platform-url-core-5.2-SNAPSHOT.jar:/home/rux/.m2/repository/org/nuxeo/common/nuxeo-common/1.4-SNAPSHOT/nuxeo-common-1.4-SNAPSHOT.jar:/home/rux/.m2/repository/org/nuxeo/ecm/platform/nuxeo-platform-directory-api/5.2-SNAPSHOT/nuxeo-platform-directory-api-5.2-SNAPSHOT.jar:/home/rux/.m2/repository/org/nuxeo/ecm/platform/nuxeo-platform-events-api/5.2-SNAPSHOT/nuxeo-platform-events-api-5.2-SNAPSHOT.jar:/home/rux/.m2/repository/org/nuxeo/runtime/nuxeo-runtime/1.4-SNAPSHOT/nuxeo-runtime-1.4-SNAPSHOT.jar:/home/rux/.m2/repository/org/nuxeo/ecm/core/nuxeo-core-api/1.4-SNAPSHOT/nuxeo-core-api-1.4-SNAPSHOT.jar:/home/rux/.m2/repository/org/nuxeo/ecm/platform/nuxeo-platform/5.2-SNAPSHOT/nuxeo-platform-5.2-SNAPSHOT.jar: org.nuxeo.ecm.platform.jaxws.NuxeoWSMainEntrancePointImpl
      does the trick. Please also note that the utility is targeted against one single source file (org.nuxeo.ecm.platform.jaxws.NuxeoWSMainEntrancePointImpl) and so it has to be run for all the code files implementing the Service.
      Actually, in the pom file there are 3 execution tags for every SEI implemented.

      It would be nice if, once the project is moved from sandbox to trunk, one will simply run usual commands (mvn clean install;ant deploy) and have the WS deployed in JBoss.

        Issue Links

          Activity

          Hide
          Florent Guillaume
          added a comment - - edited

          Note that if it simplifies configuration and deployment, we can place the jars in our repo.
          We did this for a number of other projects where no maven repository had them.
          You can mail jcarsique@nuxeo.com the info about the exact jars and their versions, and the groupId/artifactId they should have, he'll install them.

          Show
          Florent Guillaume
          added a comment - - edited Note that if it simplifies configuration and deployment, we can place the jars in our repo. We did this for a number of other projects where no maven repository had them. You can mail jcarsique@nuxeo.com the info about the exact jars and their versions, and the groupId/artifactId they should have, he'll install them.
          Hide
          Radu Darlea
          added a comment - - edited

          Thx. Already did that.
          Radu

          Show
          Radu Darlea
          added a comment - - edited Thx. Already did that. Radu
          Hide
          Julien Carsique
          added a comment - - edited

          Radu,
          could we summarize all this ?
          1) Which jars to add to archiva ?
          2) Automating copy of some jar to jboss

          Show
          Julien Carsique
          added a comment - - edited Radu, could we summarize all this ? 1) Which jars to add to archiva ? 2) Automating copy of some jar to jboss
          Hide
          Radu Darlea
          added a comment - - edited

          Here are the jars from Metro 1.1 kit, the maven link and various info:

          webservices-api.jar v1.1
          http://download.java.net/maven/glassfish/javax/xml/webservices-api/1.1/
          The maven jar is wrong, can't be used. It is in use by the Nuxeo project.

          webservices-extra-api.jar v1.1
          I couldn't find the maven lib

          webservices-extra.jar v1.1
          I couldn't find the maven lib. It is in use by test part of the Nuxeo
          project.

          webservices-rt.jar v1.1
          http://download.java.net/maven/glassfish/com/sun/xml/ws/webservices-rt/1.1/
          looks ok. It is in use by the Nuxeo project.

          webservices-tools.jar
          http://download.java.net/maven/glassfish/com/sun/tools/ws/webservices-tools/1.1/
          looks ok. It is in use by the Nuxeo project.

          wstx-services.war
          dunno what's that.

          All these files has to be patched (copied) into the
          JBOSS/server/default/deploy/jbossweb-tomcat55.sar/lib. The ones used by
          Nuxeo project are also needed as part of the project.

          Radu

          Show
          Radu Darlea
          added a comment - - edited Here are the jars from Metro 1.1 kit, the maven link and various info: webservices-api.jar v1.1 http://download.java.net/maven/glassfish/javax/xml/webservices-api/1.1/ The maven jar is wrong, can't be used. It is in use by the Nuxeo project. webservices-extra-api.jar v1.1 I couldn't find the maven lib webservices-extra.jar v1.1 I couldn't find the maven lib. It is in use by test part of the Nuxeo project. webservices-rt.jar v1.1 http://download.java.net/maven/glassfish/com/sun/xml/ws/webservices-rt/1.1/ looks ok. It is in use by the Nuxeo project. webservices-tools.jar http://download.java.net/maven/glassfish/com/sun/tools/ws/webservices-tools/1.1/ looks ok. It is in use by the Nuxeo project. wstx-services.war dunno what's that. All these files has to be patched (copied) into the JBOSS/server/default/deploy/jbossweb-tomcat55.sar/lib. The ones used by Nuxeo project are also needed as part of the project. Radu
          Hide
          Radu Darlea
          added a comment - - edited

          The Metro 1.1 libs are integrated in the build. Details on how to build the project can be found in project root, Readme.txt.

          The remaining issues are recorded as subtask into NXP-1760.

          Radu

          Show
          Radu Darlea
          added a comment - - edited The Metro 1.1 libs are integrated in the build. Details on how to build the project can be found in project root, Readme.txt. The remaining issues are recorded as subtask into NXP-1760 . Radu

            People

            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Time Tracking

                Estimated:
                Original Estimate - 4 hours
                4h
                Remaining:
                Remaining Estimate - 4 hours
                4h
                Logged:
                Time Spent - Not Specified
                Not Specified

                  Issue deployment