Personalización de los patrones de URL en el archivo web.xml para las aplicaciones JAX-WS

El archivo web.xml contiene información sobre la estructura y las dependencias externas de los componentes web en el módulo y describe cómo se utilizan los componentes en el tiempo de ejecución. Para las aplicaciones API de Java™ para servicios web XML), puede personalizar el patrón de URL en el archivo web.xml.

Acerca de esta tarea

Cuando empaqueta una aplicación JAX-WS basada en JavaBeans como un servicio web, el servicio web se incluye en un archivo WAR (Web Application Archive) o un módulo WAR dentro de un archivo EAR (Enterprise Archive). Un archivo WAR habilitado para JAX-WS contiene los elementos siguientes:
  • Un archivo WEB-INF/web.xml que describe la información de configuración y despliegue para los componentes web que componen una aplicación web.
  • Clases anotadas que implementan los servicios web contenidos en el módulo de la aplicación que incluyen la clase de implementación del punto final de servicio.
  • Clases JAXB
  • (Opcional) Los documentos WSDL (Web Services Description Language) que describen los servicios web contenidos en el módulo de la aplicación.
  • (Opcional) archivo de esquema XML
  • (Opcional) clases del programa de utilidad
  • (Opcional) los clientes de servicios web

El patrón de URL predeterminado lo define el atributo @WebService.serviceName que se incluye en la clase de implementación del servicio web. Cuando el archivo WSDL que se asocia a la clase de implementación del servicio contiene una única definición de puerto, puede optar por utilizar el patrón de URL predeterminado o puede personalizar el patrón de URL del archivo web.xml. Cuando el archivo WSDL que se asocia con la clase de implementación del servicio contiene varias definiciones de puerto dentro de la misma definición de servicio, son necesarios los patrones de URL personalizados. Si utiliza el patrón de URL predeterminado cuando la clase de implementación del servicio contiene varias definiciones de puerto, se correlacionan varias clases de implementación de servicio con el mismo patrón de URL que genera una condición de error. Debe editar el archivo web.xml y personalizar los patrones de URL para cada definición de servicio. Cada puerto se correlaciona con una clase de implementación de servicio web y con su propio patrón de URL personalizado. Personalizando el patrón de URL en el archivo web.xml, podrá corregir las definiciones de patrón de URL que están en conflicto.

Si la aplicación JAX-WS se ha empaquetado en un archivo EJB (JavaBeans), un archivo JAR (Java Archive) dentro de un archivo EAR (Enterprise Archive), puede personalizar los patrones de URL utilizando el mandato endptEnabler.

Procedimiento

  1. Determine si los patrones de URL personalizados son necesarios o deseados. Los patrones de URL personalizados sólo son necesarios cuando el archivo WSDL de su servicio web JAX-WS contiene varias definiciones de puertos dentro de un solo servicio. De lo contrario, puede definir opcionalmente patrones de URL personalizados.
  2. Para personalizar el patrón de URL de una clase de implementación de servicio, edite el archivo web.xml y proporcione un <servlet> y la entrada <servlet-mapping correspondiente para cada clase de implementación de servicio web JAX-WS para la que se desea un patrón de URL personalizado. Debe definir el valor <url-pattern> dentro de la entrada <servlet-mapping>.

Resultados

Ahora tendrá un archivo WAR (Web Application Archive) habilitado para los servicios web con patrones de URL personalizados.

Definición única de puerto WSDL en una clase de implementación de servicio

En el ejemplo siguiente se ilustra el patrón de URL predeterminado y cómo personalizar el patrón de URL, cuando el archivo WSDL asociado con la clase de implementación de servicio tiene una única definición de puerto.

Este es un fragmento de una clase de implementación de servicio web de ejemplo.

package com.ibm.test;
@WebService(serviceName="EchoService", portName="SOAP11EchoServicePort")
public class EchoServiceSOAP11{

Este es un fragmento del archivo WSDL asociado a la clase de implementación del servicio web EchoServiceSOAP11:

<wsdl:service name="EchoService">
		<wsdl:port name="SOAP11EchoServicePort" tns:binding="..." >
		...
	</wsdl:port>
</wsdl:service>
Tal como prescribe la implementación JSR-109, el patrón de URL predeterminado de este ejemplo se genera utilizando el atributo @WebService.serviceName y el patrón de URL predeterminado es /EchoService.

Para personalizar opcionalmente el patrón de URL para este ejemplo, edite el archivo web.xml y proporcione una entrada url-pattern. En este ejemplo, el patrón de URL personalizado es /EchoServiceSOAP11.

El siguiente fragmento proviene de un archivo web.xml de ejemplo que describe la configuración de un servlet:

<servlet id="...">
		<servlet-name>com.ibm.test.EchoServiceSOAP11</servlet-name>
		<servlet-class>com.ibm.test.EchoServiceSOAP11</servlet-class>
	<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
		<servlet-name>com.ibm.test.EchoServiceSOAP11</servlet-name>
		<url-pattern>/EchoServiceSOAP11</url-pattern> ---->  Definición del patrón de URL e 
indicación a la clase de implementación de servicio.
</servlet-mapping>

En el ejemplo siguiente se muestran las personalizaciones del patrón de URL necesarias cuando el archivo WSDL asociado a la clase de implementación de servicio tiene varias definiciones de puerto.

El siguiente fragmento procede de una clase de implementación de servicio web de ejemplo:

package com.ibm.test;
@WebService(serviceName="EchoService", portName="SOAP11EchoServicePort")
public class EchoServiceSOAP11{
	...
}
package com.ibm.test;
@WebService(serviceName="EchoService", portName="SOAP12EchoServicePort")
public class EchoServiceSOAP12{
	...
}

El fragmento siguiente proviene del archivo WSDL asociado a la clase de implementación del servicio web EchoServiceSOAP11. Cada puerto del archivo WSDL se correlaciona con un portName en la clase de implementación del servicio web.

<wsdl:service name="EchoService">
		<wsdl:port name="SOAP11EchoServicePort" tns:binding="..." >
		...
	</wsdl:port>
		<wsdl:port name="SOAP12EchoServicePort" tns:binding="..." >
		...
	</wsdl:port>
</wsdl:service>

En este escenario, debido a que existen varias definiciones de puerto dentro de un archivo WSDL, debe personalizar el patrón de URL editando el archivo web.xml. Especifique los patrones de URL personalizados para cada servicio.

El siguiente fragmento proviene de un archivo web.xml de ejemplo que describe la configuración de un servlet:

<servlet id="...">
		<servlet-name>com.ibm.test.EchoServiceSOAP11</servlet-name>
		<servlet-class>com.ibm.test.EchoServiceSOAP11</servlet-class>
	<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
		<servlet-name>com.ibm.test.EchoServiceSOAP11</servlet-name>
		<url-pattern>/EchoServiceSOAP11</url-pattern>
</servlet-mapping>

<servlet id="...">
		<servlet-name>com.ibm.test.EchoServiceSOAP12</servlet-name>
		<servlet-class>com.ibm.test.EchoServiceSOAP12</servlet-class>
	<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
		<servlet-name>com.ibm.test.EchoServiceSOAP12</servlet-name>
		<url-pattern>/EchoServiceSOAP12</url-pattern>
</servlet-mapping>

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_customwebxml
File name: twbs_customwebxml.html