2010-05-22 20 views
17

intento usar axis2 (1.5.1) Versión para generar códigos de Java desde archivos WSDL, pero no puedo averiguar cuál es la correcta pom.xmlaxis2 ejemplo experta

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.axis2</groupId> 
      <artifactId>axis2-wsdl2code-maven-plugin</artifactId> 
      <version>1.5.1</version> 
      <executions> 
       <execution> 
        <goals> 
         <goal>wsdl2code</goal> 
        </goals> 
        <configuration> 
         <wsdlFile>src/main/resources/wsdl/stockquote.wsdl</wsdlFile> 
         <databindingName>xmlbeans</databindingName> 
         <packageName>a.bc</packageName> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 
<dependencies> 
    <dependency> 
     <groupId>org.apache.axis2</groupId> 
     <artifactId>axis2</artifactId> 
     <version>1.5.1</version> 
    </dependency> 
</dependencies> 

cuando escribo mvn compilación, se queja el

Retrieving document at 'src/main/resources/wsdl/stockquote.wsdl'. 
java.lang.ClassNotFoundException: org.apache.xml.serializer.TreeWalker 

Y si trato de encontrar la TreeWalker, es un desastre para encontrar un archivos jar adecuados.

¿alguien me puede dar alguna pista? o dame pom.xml correcta

[Actualización] las necesidades xalan-2.7.0.jar ser depedent así, y el archivo JAR es rotos (debido al problema del nexo), THX Pascal

+0

He seguido los pasos descritos en la respuesta accepter, pero no lo hicieron trabajo; Maven todavía se queja de la clase que falta. ¿Puedes publicar una respuesta completa con un POM funcional? – Leonel

Respuesta

22

es quizás no óptimo, pero la siguiente pom.xml parece permitir que el código generado para su compilación:

<project> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.stackoverflow</groupId> 
    <artifactId>Q2888422</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    ... 
    <dependencies> 
    <dependency> 
     <groupId>org.apache.axis2</groupId> 
     <artifactId>axis2</artifactId> 
     <version>1.5.1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.ws.commons.axiom</groupId> 
     <artifactId>axiom-api</artifactId> 
     <version>1.2.6</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.ws.commons.axiom</groupId> 
     <artifactId>axiom-impl</artifactId> 
     <version>1.2.6</version> 
    </dependency> 
    <dependency> 
     <groupId>axis</groupId> 
     <artifactId>axis-wsdl4j</artifactId> 
     <version>1.5.1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.xmlbeans</groupId> 
     <artifactId>xmlbeans</artifactId> 
     <version>2.3.0</version> 
    </dependency> 
    ... 
    </dependencies> 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.axis2</groupId> 
     <artifactId>axis2-wsdl2code-maven-plugin</artifactId> 
     <version>1.5.1</version> 
     <executions> 
      <execution> 
      <goals> 
       <goal>wsdl2code</goal> 
      </goals> 
      <configuration> 
       <wsdlFile>src/main/resources/wsdl/stockquote.wsdl</wsdlFile> 
       <databindingName>xmlbeans</databindingName> 
       <packageName>a.bc</packageName> 
      </configuration> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 
</project> 

Este pom.xml es el resultado o tratar de error de más un poco de google, no pude encontrar un solo oficial o no oficial de recursos con una configuración de trabajo. En serio, ¿por qué diablos es tan difícil configurar un proyecto de Axis2? Una razón más por la que no me gusta Axis.

+0

gracias por los comentarios, y uso el nuevo dep. El error persiste, porque la dependencia xercesImpl-2.6.2 no tiene la clase TreeWalker, solo la versión posterior incluye esto. y listo toda la versión dependencias de Maven a continuación (de mi Eclipse) axis2-1.5.1.jar axioma-api-1.2.6.jar geronimo-activation_1.1_spec-1.0.jar geronimo-javamail_1.4_spec -1.2.jar commons-logging-1.1.1.jar jaxen-1.1.1.jar xml-apis-1.3.04.jar xercesImpl-2.6.2.jar geronimo-stax-api_1.0_spec-1.0.1.jar axioma-impl-1.2.6.jar wstx-ASL-3.2.4.jar eje-WSDL4J-1.5.1.jar xmlbeans-2.3. 0.jar stax-api-1.0.1.jar –

+0

Ok, necesita depender de xalan y mi xalan-2.7.0 se rompe de nuevo. ahora el problema está resuelto, thx. –

+0

Esto me puso en el camino correcto, pero tuve que actualizar las versiones axiom a 1.2.8 y también agregué una dependencia en axiom-dom para que compilara. ¡Gracias por terminar con una mañana de frustración! –

4

tener cuidado de que la configuración debe ser empujado hacia arriba (el ejemplo es incorrecto)

<plugins> 
    <plugin> 
     <groupId>org.apache.axis2</groupId> 
     <artifactId>axis2-wsdl2code-maven-plugin</artifactId> 
     <version>1.5.1</version> 
       <configuration> 
        <wsdlFile>src/main/resources/wsdl/stockquote.wsdl</wsdlFile> 
        <databindingName>xmlbeans</databindingName> 
        <packageName>a.bc</packageName> 
       </configuration> 
     <executions> 
      <execution> 
       <goals> 
        <goal>wsdl2code</goal> 
       </goals> 
      </execution> 
     </executions> 
    </plugin> 
</plugins> 
+2

¡Cuidado! Tuve un problema similar: invocación de maven según [docs] (http://axis.apache.org/axis2/java/core/tools/maven-plugins/maven-wsdl2code-plugin.html): 'mvn -e axis2-wsdl2code: wsdl2code' no eligió la configuración. Pero la configuración se lee correctamente si invocas la fase maven en lugar del objetivo: 'mvn -e generate-sources'. Es importante poder configurar cada ejecución de forma independiente si necesita generar fuentes para más de una wsdl. – Alberto

1

Ésta es una versión actualizada del pom proporcionada por Pascal Thivent.

Las modificaciones principales son que los nombres de las versiones son diferentes y se necesita neethi.

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.example</groupId> 
    <artifactId>my-wsdl2code-example</artifactId> 
    <version>1.0</version> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.axis2</groupId> 
       <artifactId>axis2-wsdl2code-maven-plugin</artifactId> 
       <version>1.6.1</version> 
       <executions> 
        <execution> 
         <id>execution_id</id> 
         <goals> 
          <goal>wsdl2code</goal> 
         </goals> 
         <configuration> 
          <packageName>com.example.wsdl</packageName> 
          <wsdlFile>src/main/wsdl/web-service.wsdl</wsdlFile> 
          <databindingName>xmlbeans</databindingName> 
         </configuration> 
        </execution> 
       </executions> 

       <dependencies> 

        <dependency> 
         <groupId>org.apache.xmlbeans</groupId> 
         <artifactId>xmlbeans</artifactId> 
         <version>2.6.0</version> 
        </dependency> 

       </dependencies> 
      </plugin> 
     </plugins> 
    </build> 

    <dependencies> 

     <dependency> 
      <groupId>org.apache.axis2</groupId> 
      <artifactId>axis2</artifactId> 
      <version>1.6.1</version> 
     </dependency> 

     <dependency> 
      <groupId>axis</groupId> 
      <artifactId>axis-wsdl4j</artifactId> 
      <version>1.5.1</version> 
     </dependency> 

     <dependency> 
      <groupId>org.apache.neethi</groupId> 
      <artifactId>neethi</artifactId> 
      <version>3.0.2</version> 
     </dependency> 


     <dependency> 
      <groupId>org.apache.ws.commons.axiom</groupId> 
      <artifactId>axiom-impl</artifactId> 
      <version>1.2.14</version> 
     </dependency> 

     <dependency> 
      <groupId>org.apache.xmlbeans</groupId> 
      <artifactId>xmlbeans</artifactId> 
      <version>2.6.0</version> 
     </dependency> 

    </dependencies> 

</project> 
2

Gracias a Pascal's pom, pude hacerlo funcionar haciendo esto con las últimas versiones. Además:

  • Tuve que agregar el complemento build-helper-maven-plugin para que mis clases de cliente pudieran acceder a los talones de proxy.
  • que eliminan la opción package config
  • cambié outputDirectory

Aquí está mi pom:

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 
<groupId>com.yourcompany</groupId> 
<artifactId>axis2-server-proxy</artifactId> 
<version>1.0.0</version> 
<packaging>jar</packaging> 

<dependencies> 
    <dependency> 
     <groupId>org.apache.axis2</groupId> 
     <artifactId>axis2</artifactId> 
     <version>1.6.3</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.ws.commons.axiom</groupId> 
     <artifactId>axiom-api</artifactId> 
     <version>1.2.15</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.ws.commons.axiom</groupId> 
     <artifactId>axiom-impl</artifactId> 
     <version>1.2.15</version> 
    </dependency> 
    <dependency> 
     <groupId>axis</groupId> 
     <artifactId>axis-wsdl4j</artifactId> 
     <version>1.5.1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.xmlbeans</groupId> 
     <artifactId>xmlbeans</artifactId> 
     <version>2.6.0</version> 
    </dependency> 
</dependencies> 

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.axis2</groupId> 
      <artifactId>axis2-wsdl2code-maven-plugin</artifactId> 
      <version>1.6.3</version> 
      <executions> 
       <execution> 
        <goals> 
         <goal>wsdl2code</goal> 
        </goals> 
        <configuration> 
         <outputDirectory>target/generated-sources/</outputDirectory> 
         <wsdlFile>src/main/wsdl/services_visa_com_realtime_realtimeservice_v6_PublicV2.wsdl</wsdlFile> 
         <databindingName>xmlbeans</databindingName> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>build-helper-maven-plugin</artifactId> 
      <executions> 
       <execution> 
        <id>add-source</id> 
        <phase>generate-sources</phase> 
        <goals> 
         <goal>add-source</goal> 
        </goals> 
        <configuration> 
         <sources> 
          <source>${project.build.directory}/generated-sources/</source> 
         </sources> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

Cuestiones relacionadas