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

Cuando utilice un enfoque de desarrollo descendente para desarrollar servicios web JAX-WS empezando con un archivo WSDL, debe obtener el URL (localizador universal de recursos) del archivo WSDL.

[Windows][z/OS]Si el archivo WSDL es un archivo local, el URL se parecerá a este ejemplo: archivo:unidad:\víaacceso\nombre_archivo.wsdl.

[Linux][AIX][HP-UX][Solaris][IBM i]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

El modelo de programación del cliente estático para JAX-WS es el llamado cliente de proxy dinámico. El cliente de proxy dinámico invoca un servicio web basado en una interfaz de punto final de servicio que se proporciona. Tras crear el proxy, la aplicación cliente puede invocar métodos en el proxy, simplemente, como una implementación estándar de estos artefactos. Para los clientes de servicio web JAX-WS que utilizan el modelo de programación de proxy dinámico, utilice la herramienta JAX-WS, wsimport, para procesar un archivo WSDL y generar artefactos Java portátiles que se utilizan para crear un cliente de servicio web. Cree los siguientes artefactos Java portátiles utilizando la herramienta wsimport:
  • 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
Supported configurations Supported configurations: Las herramientas de línea de mandatos wsimport, wsgen, schemagen y xjc no tienen soporte en la plataforma z/OS. Esta funcionalidad la proporcionan las herramientas de ensamblaje proporcionadas con WebSphere Application Server que se ejecutan en la plataforma z/OS. Obtenga información sobre estas herramientas de línea de mandatos para las aplicaciones JAX-WS para obtener más información sobre estas herramientas. sptcfg
Best practice Best practice: WebSphere Application Server proporciona la API Java para servicios web basados en XML (JAX-WS) y las herramientas de arquitectura Java para enlaces XML (JAXB). Las herramientas de línea de mandatos wsimport, wsgen, schemagen y xjc se encuentran en el directorio raíz_servidor_aplicaciones\bin\ de WebSphere Application Server tradicional. Los mandatos xjc y schemagen se encuentran en el directorio raíz_servidor_aplicaciones\jaxb\bin\ del perfil Liberty. En algunas ocasiones, los artefactos generados por las herramientas que proporcionan WebSphere Application Server y JDK dan soporte a los mismos niveles de las especificaciones. En general, los artefactos generados por las herramientas JDK tienen portabilidad en otros entornos de ejecución compatibles. Sin embargo, es más recomendable utilizar las herramientas que se proporcionan con este producto para alcanzar una integración sin interrupciones dentro del entorno de WebSphere Application Server y aprovechar las características que puedan estar soportadas únicamente en WebSphere Application Server. Para aprovechar las herramientas de JAX-WS y JAXB V2.2, utilice las herramientas que se proporcionan con el servidor de aplicaciones y que se encuentran en el directorio raíz_servidor_aplicaciones\bin\.bprac

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

Ejecute el mandato wsimport para generar los artefactos de cliente portátiles. La herramienta wsimport se encuentra en el directorio raíz_servidor_aplicaciones\bin\.
[Windows]
raíz_servidor_aplicaciones\bin\wsimport.batURL_wsdl 
[AIX][HP-UX][Linux][Solaris]
raíz_servidor_aplicaciones/bin/wsimport.sh URL_wsdl
[IBM i]
raíz_servidor_aplicaciones/bin/wsimport URL_wsdl
(Opcional) Utilice las opciones siguientes con el mandato wsimport:
  • 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 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:
    wsimport -keep -wsdllocation /META-INF/wsdl/MyService.wsdl
    bprac
  • 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

Habrá generado los artefactos Java para crear un cliente JAX-WS que puede invocar servicios web JAX-WS. Para obtener más información sobre el uso, la sintaxis y los parámetros del mandato wsimport, consulte el mandato wsimport para la documentación de aplicaciones JAX-WS.

Ejemplo

En el ejemplo siguiente se muestra cómo se utiliza el mandato wsimport para procesar el archivo ping.wsdl de ejemplo para generar artefactos portátiles.
  1. 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>
  2. Ejecute el mandato wsimport desde el directorio raíz_servidor_aplicaciones\bin\.
    [Windows]
    raíz_servidor_aplicaciones\bin\wsimport.bat -keep -verbose ping.wsdl
    [Linux][AIX][HP-UX][Solaris]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:
    . ./setupCmdLine.sh  (Observe que hay un espacio entre los puntos.)
    desde el directorio /raíz_servidor_aplicaciones>/bin. Ejecute el mandato wsimport:
    raíz_servidor_aplicaciones/bin/wsimport.sh -keep -verbose ping.wsdl
    [IBM i]
    raíz_servidor_aplicaciones/bin/wsimport -keep -verbose ping.wsdl
Después de generar los archivos de plantilla a partir del mandato wsimport, se generan los archivos siguientes:
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).

Qué hacer a continuación

Termine la implementación del cliente.

Icon that indicates the type of topic Task topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_jaxwsclientfromwsdl
File name: twbs_jaxwsclientfromwsdl.html