2011-08-04 15 views
10

Estoy usando Netbeans 7 con Maven 2.2.1 y jaxws-maven-plugin 1.12. El código se implementa en Glassfish 3.1, o lo estará cuando lo compile :)Maven Uso de JAX-WS 2.1 en lugar de JAX-WS 2.2

Cuando construyo el proyecto, el wsimport se ejecuta como se esperaba y genera los archivos fuente del WSDL provisto. El problema es que la construcción falla durante la fase de compilación con las siguientes tres excepciones. Al investigar esto, veo que estos constructores se agregaron de JAX-WS 2.1 a JAX-WS 2.2. Mi creencia es que wsimport usa JAX-WS 2.1 y la compilación usa JAX-WS 2.2.

¿Alguien puede confirmar mi sospecha? O, si estoy equivocado, ¿podría tener una idea de lo que puede estar causando esto?

Gracias.


ACTUALIZADO/ACLARACIÓN DEL PROBLEMA El cliente de servicios Web se extiende javax.xml.ws.Service y se lanza el error cuando el cliente intenta llamar al constructor de la superclase con tres argumentos. Como la superclase no tiene ningún constructor con tres argumentos, falla.

javax.xml.ws.Service se encuentra en JDK SE 1.6 y JAX-WS 2.1 como la versión incorrecta.

javax.xml.ws.Service se encuentra en JAX-WS 2.2 como la versión correcta .


El error se produce tres veces desde que está en tres constructores sobrescritos pero es el mismo error por lo que he incluido sólo una vez.

cannot find symbol 
symbol : constructor Service(java.net.URL,javax.xml.namespace.QName,javax.xml.ws.WebServiceFeature[]) 
location: class javax.xml.ws.Service 


<plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>jaxws-maven-plugin</artifactId> 
      <version>1.12</version> 
      <executions> 
       <execution> 
        <goals> 
         <goal>wsimport</goal> 
        </goals> 
        <configuration> 
         <wsdlFiles> 
          <wsdlFile>*path to WSDL*</wsdlFile> 
         </wsdlFiles> 
         <wsdlLocation>*url to WSDL*</wsdlLocation> 
         <staleFile>${project.build.directory}/jaxws/stale/BudgetCheckingServiceService.stale</staleFile> 
        </configuration> 
        <id>wsimport-generate-BudgetCheckingServiceService</id> 
        <phase>generate-sources</phase> 
       </execution> 
      </executions> 
      <dependencies> 
       <dependency> 
        <groupId>com.sun.xml.ws</groupId> 
        <artifactId>jaxws-tools</artifactId> 
        <version>2.2.6-SNAPSHOT</version>        
       </dependency> 

       <dependency> 
        <groupId>javax.xml</groupId> 
        <artifactId>webservices-api</artifactId> 
        <version>1.4</version> 
       </dependency> 
      </dependencies> 
      <configuration>      
       <sourceDestDir>${project.build.directory}/generated-sources/jaxws-wsimport</sourceDestDir> 
       <xnocompile>true</xnocompile> 
       <verbose>true</verbose> 
       <extension>true</extension> 
       <catalog>${basedir}/src/jax-ws-catalog.xml</catalog> 
      </configuration> 
     </plugin> 

Respuesta

6

Como se puede ver en la jaxws-maven-plugin-1.12's pom, tiene la dependencia JAXWS-tools-2.1.7. Bueno, lo has sobrepasado a través del pom. Sin embargo, este uso excesivo funciona siempre que la versión over-ride (2.2.6-SNAPSHOT) sea api-compatible con la versión predeterminada del complemento (2.1.7).

Claramente, en función de sus comentarios, no son compatibles con api. Entonces, como veo, esto no funcionará. Here es una referencia a seguir.

Ejecute mvn install con el distintivo -X para determinar la versión exacta de jaxws-tools que utiliza este complemento. Haz un pastebin si no te importa, ¡entonces también podemos echarle un vistazo!

EDITAR: Una cosa que puedes hacer es; actualice las jaxws-tools dep de maven-jaxws-plugin a la versión necesaria suya. Y, a continuación, solucione los problemas que se producen debido a la incompatibilidad api (como los problemas del constructor). A continuación, envíe un parche al upstream.

+0

¡Muchas gracias por una respuesta rápida! Literalmente estoy afuera de la puerta en este momento y no puedo volver a hacerlo hasta mañana por la mañana. Haré lo que me dijiste mañana y responderé aquí. Una vez más, muchas gracias. – Sean

+0

Aquí está mi pastebin para la salida de depuración que creó. Desearía ser un experto en Maven, pero todavía estoy aprendiendo cómo hace lo que hace. Gracias por ayudarme a interpretarlo. http://pastebin.com/FvxQXWyU – Sean

+0

también, aquí está mi pom si esto ayuda. http://pastebin.com/Y3hZB9TJ – Sean

1

que tenía un problema similar y se resolvió poniendo el archivo webservices-api.jar en mi carpeta %JDK_HOME%/jre/lib/endorsed.

Cuestiones relacionadas