Generación de artefactos de Java para aplicaciones JAX-WS desde un archivo WSDL
Utilice las herramientas JAX-WS para generar los artefactos de Java™ necesarios para desarrollar los servicios web JAX-WS cuando se empieza con un archivo WSDL.
Antes de empezar
Cuando se utiliza un enfoque de desarrollo descendente para desarrollar servicios web JAX-WS (API de Java para servicios web basados en XML) empezando con un archivo WSDL (Web Services Description Language), debe obtener el URL (localizador universal de recursos) del archivo WSDL.
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 el entorno de compilación Ant para invocar la herramienta wsimport. Para que funcione debidamente, esta tarea Ant requiere que se invoque Ant mediante el script ws_ant.
Procedimiento
![[Windows]](../images/windows.gif)
raíz_servidor_aplicaciones\bin\wsimport.bat URL_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 wsdl_URL
![[IBM i]](../images/iseries.gif)
raíz_servidor_aplicaciones/bin/wsimport wsdl_URL
- Utilice la opción -verbose para ver una lista de archivos generados, cuando ejecute el mandato.
- Utilice la opción -keep para guardar 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 (archivador empresarial) 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, por ejemplo, un archivo JAR (archivador Java) del cliente de servicios web o un archivo WAR (archivador de aplicación web). Puede especificar un URI relativo para la ubicación del archivo WSDL mediante el atributo de anotación -wsdllocation. Por ejemplo, si el archivo MiServicio.wsdl se encuentra en el directorio META-INF/wsdl/, ejecute la herramienta wsimport y utilice la opción -wsdllocation para especificar el valor que debe utilizarse para la ubicación del archivo WSDL. Esto garantiza que el artefacto generado contenga la información de -wsdllocation correcta necesaria cuando la aplicación se carga 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 las conexiones o correlaciones asíncronas. 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 WSDL 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_serv_apl\bin\wsimport.bat -keep -verbose ping.wsdl
Los sistemas operativos, como AIX o Linux incluyen el script de origen como el shell principal para heredar 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\PingStringInput.java
com\ibm\was\wssample\sei\ping\PingService.java
El archivo ObjectFactory.java contiene métodos de fábrica para cada interfaz de contenido Java y cada interfaz de elemento Java generado en el paquete de ping asociado. El archivo package-info.java toma el valor targetNamespace y crea la estructura de directorio. El archivo PingServicePortType.java es la clase de SEI (interfaz de punto final de servicio) generada que contiene la definición del método ping. El archivo PinStringInput.java contiene los valores del tipo de JAXB generados que son clases Java correlacionadas desde los tipos de esquema XML. El archivo PingService.java se la clase del proveedor de servicios generada que el cliente JAX-WS utiliza.