lunes, febrero 01, 2010

JAX-WS 2.2 Web Methods ocultos y polimorfismo

Pues siguiendo con la nueva especificación de los JAX-WS 2.2... vemos que por default todos los metodos declarados dentro de una clase con la anotacion WebService se vuelven publicos, cosa que antes no era asi, antes todos estaban ocultos y solo colocando la anotacion WebMethod se volvian publicos.

Esto me marco error en algunas clases de WebServices donde tenia polimorfismo interno, o metodos que estaban desactivados para el uso publico.

La solucion fue colocar la etiqueta

@WebMethod(exclude=true)

Que excluye a metodo dentro de la definición del webservice.

Esta nueva especificación parece traer algunas mejoras que no he logrado revisar a fondo debido a que es muy nueva y existe poca documentación al respecto, . pero cuando vea algo interesante ya lo veran por aqui...

Netbeans 6.8 Error de JAX-WS 2.2 API Endorsed

Algunos tendran el problema que sus proyectos de Netbeans 6.7 o anteriores con referencias a Webservices, no compilan en el 6.8 esto es por que no se actualiza el proyecto, ya que el 6.8 usa JAX-WS 2.2, y nosotros veniamos usando el 2.1.

Pues bien... Netbeans 6.8 añade a nuestro proyecto en el archivo nbproject/project.properties la linea

endorsed.classpath=

Pero el buen Netbeans no le asigna un valor... su valor correcto seria

endorsed.classpath=${libs.javaee-endorsed-api-6.0.classpath}

Ademas... el Netbeans no le agrega al wsimport (generador de clases del Webservce) la linea que permite el uso de carpetas endorsed. Para hacer esto nos vamos a Proyectos/Web Service Reference/Servicio hacemos click derecho... luego Edit Web Service Attributes... wsimport options... add... y en option escribimos xendorsed y como valor ponemos true... y listo.. ya podemos compilar otra vez..