2009-11-03 15 views
10

Tengo un paquete con clases "lógicas" (como CheckAuthenticationDataLogic.java, GetVocabulariesLogic.java). Y otra clase - ApiService.java se usa para generar wsdl. ApiService.java está lleno de métodos como éste:Generar WSDL de la clase java source

/** 
    * Check authentication data. 
    * @param contractNumber - number of contract. 
    * @param msisdn - msisdn. 
    * @param superPassword - super password. 
    * @return result of authentication. 
    */ 
    @WebMethod 
    @WebResult(name = "result") 
    public CheckAuthenticationDataResult checkAuthenticationData(@WebParam(name = "contractNumber") 
                   final String contractNumber, 
                   @WebParam(name = "msisdn") 
                   final String msisdn, 
                   @WebParam(name = "superPassword") 
                   final String superPassword) { 
    return runLogic(new CheckAuthenticationDataLogic(contractNumber, msisdn, superPassword)); 
    } 

Como se puede ver que es sólo un métodos de proxy ... Así que quiero evitar hacer mismo trabajo dos veces y generar WSDL derecha desde clases de lógica sin escribir ApiService.java . ¿Existe alguna herramienta o biblioteca para este propósito?

Respuesta

16

La herramienta wsgen genera artefactos portátiles JAX-WS utilizados en servicios web JAX-WS. Tenga en cuenta que no tiene que generar WSDL en el momento del desarrollo ya que el tiempo de ejecución JAXWS generará automáticamente un WSDL para usted cuando implemente su servicio.

Es posible que desee comprobar la JAX-WS RI documentation y sobre todo la samples (prestar una especial atención a la fromjava muestra).

+0

tengo un error "Exception in thread" main "java.lang.NoClassDefFoundError" y ocurre porque esta clase no se coloca en la ruta de clase sino en la biblioteca remota (las bibliotecas se colocan solo en otra carpeta). ¿Cómo puedo incluir estas bibliotecas en mi classpath? – Oleksandr

+0

wsgen -wsdl: Xsoap1.2 -extension -d testGen -cp/home/vidocq/workspace/ws-crp/build/output/eclipse-classes com.crp.logic.CheckAuthenticationDataLogic – Oleksandr

+0

¿Qué error obtienes al ejecutar 'wsgen 'con' -cp'? Actualice su pregunta con detalles sobre la configuración de su proyecto (dónde se encuentran las fuentes) y el seguimiento. –

0

La pila de servicios web Metro (http://metro.java.net/) proporciona una herramienta (wsgen) para generar WSDL a partir de Java anotado.

+1

No es necesario Metro (Metro = JAX-WS RI + WSIT/Tango), sólo es necesario JAX-WS RI que se incluye en Java 6 Entonces, si está utilizando Java 6, en realidad no necesita nada. –

+0

@Pascal Thivent: Tienes toda la razón. Sin embargo, creo que Metro suele estar más actualizado que el JAX-WS RI provisto por JSE. –

+0

Bueno, la versión 14 de la actualización JDK 6 tiene JAX-WS 2.1.6 RI, que es bastante decente. Pero, de hecho, Metro 1.5 incluye JAX-WS 2.1.7 (que se considera una versión menor, ver http://weblogs.java.net/blog/2009/04/21/jax-ws-ri-217metro-15- liberado). Sin embargo, si desea utilizar JAX-WS RI 2.1.7, puede descargarlo de https://jax-ws.dev.java.net, aún no necesita Metro. Pero, sinceramente, no me molestaría jugar con el mecanismo de directorio endosado. –

3

Axis2 es otra alternativa, específicamente el comando Java2WSDL/plugin

Cuestiones relacionadas