Mandato wsimport para aplicaciones JAX-WS
La herramienta de línea de mandatos wsimport procesa un archivo WSDL (Web Services Description Language) existente y genera los artefactos necesarios para desarrollar aplicaciones de servicios web JAX-WS (Java™ API for XML-Based Web Services). Los artefactos generados son compatibles con Java 5, por lo que son portables entre distintas versiones y plataformas de Java.
La herramienta de línea de mandatos wsimport da soporte al método descendente para desarrollar servicios web JAX-WS. Cuando comience con un archivo WSDL existente, utilice la herramienta de línea de mandatos wsimport para generar los artefactos JAX-WS necesarios.
- Interfaz de punto final de servicio (SEI)-La SEI es la representación Java anotada del archivo WSDL para el servicio web. Esta interfaz se utiliza para implementar puntos finales JavaBeans o para crear instancias de cliente proxy dinámico.
- Clase de extensión
javax.xml.ws.Service
: esta es una clase generada que amplía la clasejavax.xml.ws.Service
. Esta clase se utiliza para configurar y crear tanto instancias de proxy dinámico como instancias de asignación. - beans de datos necesarios, incluidos los beans JAXB (Java Architecture for XML Binding) necesarios para modelar los datos de servicio web.
- Debe definir todos los servicios dentro del archivo WSDL principal. La herramienta wsimport no procesa los servicios definidos dentro de un archivo WSDL importado.
- Si ejecuta la herramienta wsimport en un archivo WSDL que implementa un patrón de tipo Literal o Documento, los elementos complexTypes que definen los tipos de entrada y de salida deben constar de nombres exclusivos para impedir conflictos de nombres en la lista de parámetros de la operación.
- Si ejecuta la herramienta wsimport y pasa un URL (Uniform
Resource Identifier)
?wsdl
como un parámetro para un archivo WSDL, asegúrese de que está utilizando el URI de WSDL resuelto. En el perfil completo, la herramienta wsimport resuelve correctamente el URI?wsdl
, pero es posible que otros URI relativos especificados no se resuelvan correctamente. En el perfil de Liberty, la herramienta wsimport resuelve correctamente el URI?wsdl
y otros URL relativos especificados.
Además de utilizar las herramientas desde la línea de mandatos, puede invocar estas herramientas JAX-WS desde los entornos de compilación Ant para WebSphere Application Server tradicional. 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.
Sintaxis
La sintaxis de la línea de mandatos es:
app_server_root\bin\wsimport.bat [options] WSDL_URI
app_server_root/bin/wsimport.sh [options] WSDL_URI
app_server_root/bin/wsimport [options] WSDL_URI
Parámetros
URI_WSDL es el único parámetro necesario. Los parámetros siguientes son opcionales para el mandato wsimport:
- -b <path>
- Especifica los archivos de enlace JAX-WS o JAXB externos. Puede especificar varios archivos de enlace JAX-WS y JAXB mediante la opción
-b
. Pero cada archivo se debe especificar con su propia opción-b
. - -B <jaxbOption>
- Especifica pasar esta opción al compilador de esquemas JAXB.
- -catalog
- Especifica el archivo de catálogo para resolver las referencias de entidad externas. Es compatible con los formatos de catálogo XML TR9401, XCatalog y OASIS.
- -d <directory>
- Especifica dónde se han de colocar los archivos de salida generados.
- -extension
- Especifica si se aceptan extensiones personalizadas para funciones que no se han especificado mediante la especificación JAX-WS. Si se utilizan extensiones personalizadas, es posible que las aplicaciones no se puedan portar o no puedan interactuar con otras implementaciones.
- -help
- Muestra el menú de ayuda.
- -httpproxy:<host>:<port>
- Especifica un proxy HTTP. El valor de puerto predeterminado es 8080.
- -keep
- Especifica si se conservan los archivos de origen generados.
- -p <package_name>
- Especifica un paquete de destino con esta opción de línea de mandatos y altera temporalmente cualquier personalización de archivo WSDL y enlace de esquema para el nombre del paquete y el algoritmo de nombre de paquete predeterminado definidos en la especificación JAX-WS.
- -quiet
- Especifica que se debe suprimir la salida wsimport .
- -s <directory>
- Especifica el directorio dónde se han de colocar los archivos fuente generados.
- -target <version>
- Especifica generar código que sea compatible con un nivel de especificación JAX-WS determinado. Especifica la versión 2.0 o 2.1 para generar código que cumpla con la especificación JAX-WS 2.0 o JAX-WS 2.1, respectivamente. Si se especifica la versión 2.1 se indica que se debe generar código que cumpla con la especificación JAX-WS 2.1. El valor predeterminado es la versión 2.2 y genera código que es compatible con la especificación JAXB 2.2.
- -verbose
- Especifica que se han de generar mensajes de salida relacionados con las acciones del compilador.
- -version
- Imprime la información de versión. Si especifica esta opción, sólo se incluye la información de versión en la salida del mandato y el mandato no se procesa normalmente.
- -wsdlLocation
- Especifica el valor
@WebServiceClient.wsdlLocation
.Configuraciones soportadas: La herramienta wsimport no establece el valor@WebService.wsdlLocation
de forma predeterminada o cuando se especifica el atributo-wsdlLocation . La herramienta de línea de mandatos wsimport sólo actualiza la anotación @WebServiceClient.wsdlLocation. Puede actualizar manualmente la anotación @WebService.wsdlLocation con un URL relativo que especifica la ubicación del archivo WSDL (Web Services Description Language). Si la anotación @WebService.wsdlLocation está presente en una clase de implementación de punto final, entonces el valor debe ser un URL relativo y el documento WSDL al que hace referencia debe estar empaquetado con la aplicación.Evitar problemas: Si especifica un URL HTTPS para el parámetro-wsdlLocation , la herramienta wsimport genera una clase de servicio con un constructor sin argumentos que no es válido. Evite utilizar el constructor de servicio sin argumentos para crear una instancia de servicio. En su lugar, pase el URL HTTPS para uno de los constructores de clases de servicio que toma un URL WSDL como argumento; por ejemplo:MyService("https://example.ibm.com/My?wsdl");
- -clientJar
- wsimport en el servicio WSDL genera las clases que son necesarias para la invocación de servicios web. Pero no toda la información que necesita el entorno de ejecución JAX-WS se captura en la SEI o WebServiceClient a través de las anotaciones de servicio web estándar. La clase generada tiene la ubicación del WSDL, por lo que puede recuperar los metadatos adicionales del servicio durante la ejecución. Pero es necesaria una conexión adicional simplemente para acceder a los metadatos cada vez que se crea una instancia de servicio, lo cual aumenta el uso de la red. Mediante la opción -clientJar de wsimport, el WSDL y el esquema se descargan automáticamente y todos los artefactos generados del extremo cliente se empaquetan en un archivo JAR. Por lo tanto, puede incluir el archivo JAR generado utilizando esta nueva opción en la vía de acceso de clases y no necesita recuperar los WSDL a partir del punto final cada vez que se crea una instancia de servicio, con lo cual se reduce el uso de la red.