Professional Documents
Culture Documents
En NetBeans
Web Service
Conjunto de protocolos y estndares que sirven para intercambiar datos entre aplicaciones. Distintas aplicaciones de software desarrolladas en lenguajes de programacin diferentes, y ejecutadas sobre cualquier plataforma, pueden utilizar los servicios web para intercambiar datos en redes de ordenadores como Internet (Wikipedia). Es como una Aplicacin Web pero en lugar de ser accedidas por una persona a travs de un Browser son accedidas atreves de otras aplicaciones a travs de protocolos como SOAP o RMI. En definitiva es un conjunto de funciones que pueden ser llamadas remotamente por un programa cliente va http, quien puede recibir los resultados de la misma.
WSDL
En un WSDL se definen:
Estructuras u objetos para las entradas y salidas de los servicios. Esto se hace tal como se hara en un XML Schema, o incluso importando un esquema (.XSD). Mensajes, a los que se les asigna un nombre y un tipo que puede ser un tipo primitivo (xsd:string) o uno definido en el punto anterior Puerto, que identifica la interfaz del servicio mediante la identificacin de operaciones y sus respectivos mensajes de entrada y salida. Bindings, en donde se define el protocolo y forma con el que se acceder a las llamadas de entrada y de salida Servicios, que une identifica a una tupla puerto-binding a una direccin de servicio.
Tipos de WSDL
Existen 3 tipos de WSDL, RPC, document/literal y document/wrapped. Solo los dos primeros son WS-I-compliant. En el orden mencionados anteriormente va aumentando la complejidad del wsdl, pero tambin su estandarizacin. La principal diferencia es en la estructura de los mensajes generados por el binding y que son finalmente enviado entre el cliente y el servidor Los primeros son buenos para servicios muy simples si se necesita hacer los wsdl a mano o ser ledos por personas. En otro caso no se justifica utilizarlos.
WSDL de Ejemplo
Herraminetas de la Demostracin
Netbeans 6.0. JDK 6.0. JEE 5.0. Apache Tomcat 6.0.1.
Creacion de un WS
1. 2. Creamos una nueva aplicacin web y la configuramos para que corra sobre el servidor deseado (En nuestro caso Tomcat 6.0.16). Dentro del proyecto ponemos new->Web Service, escogemos nombre y package. Al crear el servicio se crea una nueva seccin Web Services dentro del proyecto. Cada servicio ah indicado esta asociado a una clase, y dentro de esa seccin podemos ver su cdigo o ver el servicio en modo diseo. Vamos a la seccin de servicios y nos centramos en el servicio recin creado. Ah podemos ir agregando mtodos indicando sus entradas y respuestas, sus excepciones y sus comentarios. En general Netbeans ocupa tags un tanto confusos dentro del cdigo para poder publicar el servicio as que es fuertemente recomendable usar cada vez que se pueda la el modo diseo. Una vez creados los mtodos que queremos ofrezca nuestro servicio, debemos implementar sus funcionalidades. Finalmente, al terminar todo lo anterior procedemos a deployar la aplicacin: Sobre el proyecto, click derecho->undeploy and deploy.
3.
4. 5.
Provar el Servicio
Supongamos que al crear la aplicacin indicamos que su Context Path era /appname. Entonces la direccin del servcio (servurl) ser: http://serverurl/appname/servicio. Esta direccin es la de un servlet que procesa las peticiones y genera las llamadas a servicios y enva sus respuestas al cliente. Dado lo anterior, el wsdl estar en servurl?wsdl. Se ve que no es otra url, sino que es la misma pero con un argumento. Esto es porque el wsdl no es un archivo fsico, sino que es generado por el servlet al recibir el argumento wsdl. Una llamada a un servicio es del tipo POST, por lo que una llamada del tipo GET genera una pagina con datos del servicio. Tambin se pueden obtener los esquemas con las definiciones de los tipos usando serverurl?xsd=1n.
Cliente en Netbeans
Se crea una aplicacin Java comn y corriente. Dentro del proyecto se agrega un nuevo cliente (new->Web Service Client). Para finalizar se debe escoger el wsdl, que puede ser un archivo externo, un archivo del proyecto o una URL. Se puede hacer esto para varios servicios. Cada cliente as creado solamente importa dentro del proyecto las definiciones de las funciones ofrecidas por cada servicio. Las clases necesitadas para cada servicio en particular (objetos de respuesta, ports, bindings,etc..) son creadas en tiempo de compilacin. Finalmente, dentro del mismo proyecto, si queremos invocar alguna de estas funciones remotas debemos, en el rea de edicin de cdigo, hacer click con el botn derecho y seleccionar Web Service Client Resource->Call Web Service Operation. Al hacer esto se puede escoger cualquier funcin de cualquiera de los servicios importados. Al escoger una funcin se agregaran varias lneas de cdigo que lo que hacen es crear un objeto del tipo necesario para llamar la funcin, instanciar un puerto acorde con el servicio, llamar a travs del puerto a la funcin y guardar el resultado en un objeto consistente con el tipo de respuesta.
Despliege(Deployment)
Netbeans cada vez que compila genera el archivo .war que contiene todo lo necesario para deplegar la aplicacin en un servidor externo. Es necesario destacar que las distribuciones normales de Tomcat no incluyen las librerias de JAX-WS y es necesario indicar en el proyecto que estas deben ser empaquetadas dentro del .war
La alternativa:MyEclipse
MyEclipse es un pluguin de Eclipse creado especialmente para aplicaciones web y enterprise. Tiene varias ventajas funcionales (manejo de servidores, despliege, etc..), pero es pagado. Las principales ventajas en cuanto a WS que realmente influyen en producto final son:
Se puede elegir cualquier tipo de WSDL, no solo document/wrapped. Genera dentro del proyecto los .java de las clases generadas para el servicio, separadas en el port, el binding, un wrapper del servicio y el servicio mismo. Esto permite hacer modificaciones en como se maneja la comunicacin en sus diversas etapas, permitiendo, por ejemplo, identificacin de sesin ANTES de procesar el mensaje y un cdigo mucho mas pulcro. Puede generar servicios a partir de CUALQUIER clase con constructores que no reciban parmetros, no solo EJBs. Incluye utilidades para manejar un CATALOGO de servicios.