Desarrollo de un cliente JAX-WS a partir de un archivo WSDL
Las herramientas JAX-WS Java™ API for XML-Based Web Services) soportan la generación de los artefactos Java que necesita para desarrollar clientes de servicios web JAX-WS estáticos cuando se empieza con un archivo WSDL (Web Services Description Language).
Antes de empezar
Si el archivo WSDL es un archivo local, el URL se parecerá a este ejemplo: archivo:unidad:\víaacceso\nombre_archivo.wsdl.
Si el archivo WSDL es un archivo local, el URL se parecerá a este ejemplo: archivo:/víaacceso/nombre_archivo.wsdl.
También se pueden especificar los archivos locales con la vía de acceso del archivo absoluta o relativa.
Acerca de esta tarea
- Interfaz de punto final de servicio (SEI)
- Clase de servicio
- Clase de excepción que se correlaciona desde la clase wsdl:fault (en caso de haberla)
- Valores del tipo generado JAXB (arquitectura Java para enlaces XML) que son clases Java correlacionadas desde tipos de esquema XML


Además de utilizar las herramientas de la línea de mandatos, puede invocar estas herramientas JAX-WS desde los entornos de compilación Ant. Utilice la tarea Ant com.sun.tools.ws.ant.WsImport desde dentro del entorno de compilación de Ant para invocar la herramienta wsimport. Para funcionar correctamente, esta tarea Ant necesita que se invoque Ant utilizando el script ws_ant.
Procedimiento
![[Windows]](../images/windows.gif)
raíz_servidor_aplicaciones\bin\wsimport.batURL_wsdl
![[AIX]](../images/aixlogo.gif)
![[HP-UX]](../images/hpux.gif)
![[Linux]](../images/linux.gif)
![[Solaris]](../images/solaris.gif)
raíz_servidor_aplicaciones/bin/wsimport.sh URL_wsdl
![[IBM i]](../images/iseries.gif)
raíz_servidor_aplicaciones/bin/wsimport URL_wsdl
- Utilice la opción -verbose para ver una lista de archivos generados, cuando ejecute el mandato.
- Utilice la opción -keep para conservar los archivos Java generados.
- Utilice la opción -wsdlLocation para especificar la ubicación del archivo WSDL.
Best practice: Un método recomendado para asegurarse de que produce un archivo EAR (Enterprise Archive) de cliente de servicios web JAX-WS que se puede transferir a otros sistemas es empaquetar el documento WSDL en el módulo de aplicación como un archivo JAR (Java Archive) del cliente de servicios web o un archivo WAR (web Archive). Puede especificar un URI relativo para la ubicación del archivo WSDL mediante el atributo de anotación -wsdllocation. Por ejemplo, si el archivo MyService.wsdl se encuentra en el directorio META-INF/wsdl/, ejecute la herramienta wsimport y utilice la opción -wsdllocation para especificar el valor que se utilizará para la ubicación del archivo WSDL. Así, se garantiza que los artefactos generados contengan la información de -wsdllocation correcta que se necesita cuando se carga la aplicación en la consola administrativa; por ejemplo:
bpracwsimport -keep -wsdllocation /META-INF/wsdl/MyService.wsdl
- Utilice la opción -b si está utilizando WSDL o las personalizaciones de esquema para especificar archivos de enlace externos que contengan las personalizaciones.
Puede personalizar los enlaces en el archivo WSDL para habilitar correlaciones asíncronas o archivos adjuntos. Para generar interfaces asíncronas, añada la declaración del enlace enableAsyncMapping de personalización sólo del lado del cliente al elemento wsdl:definitions o en un archivo de enlace externo definido en el archivo WSDL. Utilice la declaración de enlace enableMIMEContent en el cliente personalizado o el archivo de enlace del servidor para habilitar o inhabilitar las reglas de correlación predeterminadas mime:content. Si desea información adicional sobre las declaraciones de enlace personalizadas, consulte el capítulo 8 de la especificación JAX-WS.
Obtenga información sobre el mandato wsimport para conocer mejor este mandato y las opciones adicionales que se pueden especificar.
Resultados
Ejemplo
- Copie el siguiente archivo ping.wsdl en un directorio temporal.
<?xml version="1.0" encoding="UTF-8"?> <!-- * Este programa se puede utilizar, ejecutar, copiar, modificar y distribuir * sin derechos de copia para fines de desarrollo, uso, comercialización o distribución. --> <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://com/ibm/was/wssample/sei/ping/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="PingService" targetNamespace="http://com/ibm/was/wssample/sei/ping/"> <wsdl:types> <xsd:schema targetNamespace="http://com/ibm/was/wssample/sei/ping/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="pingStringInput"> <xsd:complexType> <xsd:sequence> <xsd:element name="pingInput" type="xsd:string" /> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> </wsdl:types> <wsdl:message name="pingOperationRequest"> <wsdl:part element="tns:pingStringInput" name="parameter" /> </wsdl:message> <wsdl:portType name="PingServicePortType"> <wsdl:operation name="pingOperation"> <wsdl:input message="tns:pingOperationRequest" /> </wsdl:operation> </wsdl:portType> <wsdl:binding name="PingSOAP" type="tns:PingServicePortType"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" /> <wsdl:operation name="pingOperation"> <soap:operation soapAction="pingOperation" style="document" /> <wsdl:input> <soap:body use="literal" /> </wsdl:input> </wsdl:operation> </wsdl:binding> <wsdl:service name="PingService"> <wsdl:port binding="tns:PingSOAP" name="PingServicePort"> <soap:address location="http://localhost:9080/WSSampleSei/PingService" /> </wsdl:port> </wsdl:service> </wsdl:definitions>
- Ejecute el mandato wsimport desde el directorio raíz_servidor_aplicaciones\bin\.
raíz_servidor_aplicaciones\bin\wsimport.bat -keep -verbose ping.wsdl
Los sistemas operativos como, por ejemplo, AIX o Linux incluyen el script como fuente para que el shell principal herede las variables exportadas ejecutando el mandato siguiente:
desde el directorio /raíz_servidor_aplicaciones>/bin. Ejecute el mandato wsimport:. ./setupCmdLine.sh (Observe que hay un espacio entre los puntos.)
raíz_servidor_aplicaciones/bin/wsimport.sh -keep -verbose ping.wsdl
raíz_servidor_aplicaciones/bin/wsimport -keep -verbose ping.wsdl
com\ibm\was\wssample\sei\ping\ObjectFactory.java
com\ibm\was\wssample\sei\ping\package-info.java
com\ibm\was\wssample\sei\ping\PingServicePortType.java
com\ibm\was\wssample\sei\ping\PingService.java
com\ibm\was\wssample\sei\ping\PingStringInput.java
Los archivos ObjectFactory.java, PingService.java y PingServicePortType.java son los archivos de clases Java generados que se utilizarán al empaquetar los artefactos Java con la implementación de cliente dentro de un archivo JAR (Java archive) o WAR (Web Application Archive).