En esta oportunidad mostraré como trabajar con PROXY Client con JAXWS usando SPRING 3.
Todos sabemos que cuando uno crea un PROXY Client con JAXWS y lo encapsula en un .jar, se puede realizar de 2 formas:
1. En base la URL del servicio desplegado.
2. En base al .WSDL en físico en un ruta especifica.
Al realizar cualquier de estos 2 pasos, se genera una dependencia internamente dentro del .jar, ya sea de la ruta absoluta del .WSDL o bien de la URL de la cual se genero el .jar.
Este es un gran problema por eso es que, en este caso, SPRING entra a solucionar dicho problema y muchos más. Ya que dentro de sus mappings XML setea y asocia: targetNamespace, service, EndPoint, etc, por c/u de los Servicios Web los cuales consumiremos.
En mapping aplicado es el siguiente:
En mi caso yo segmento toda la logica para el manejo de WS en un XML separado del ApplicationContext, llamado: applicationProxyWs.xml:
(Para fines del ejemplo, se ha cambiado LLAVES por CORCHETES):
[?xml version="1.0" encoding="UTF-8" ?]
[beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:task="http://www.springframework.org/schema/task"
xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:ws="http://jax-ws.dev.java.net/spring/core"
xmlns:wss="http://jax-ws.dev.java.net/spring/servlet"
xmlns:oxm="http://www.springframework.org/schema/oxm"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/jee
http://www.springframework.org/schema/jee/spring-jee-3.0.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-3.0.xsd
http://jax-ws.dev.java.net/spring/core
http://jax-ws.dev.java.net/spring/core.xsd
http://jax-ws.dev.java.net/spring/servlet
http://jax-ws.dev.java.net/spring/servlet.xsd" ]
[util:map id="jaxwsCustomProperties" ]
[entry key="com.sun.xml.ws.request.timeout" ]
[value type="java.lang.Integer" ]1500[/value]
[/entry]
[entry key="com.sun.xml.ws.connect.timeout" ]
[value type="java.lang.Integer" ]1500[/value]
[/entry]
[/util:map]
[bean id="ObtenerDatosService" class="org.springframework.remoting.jaxws.JaxWsPortProxyFactoryBean" ]
[property name="wsdlDocumentUrl" value="http://localhost:8088/mockObtenerDatosBinding?wsdl" /]
[property name="namespaceUri" value="http://pe.com.externalCompany/bean/ObtenerDatosWS" /]
[property name="serviceName" value="ObtenerDatosService" /]
[property name="portName" value="ObtenerDatosPort" /]
[property name="serviceInterface" value="externalcompany.com.pe.bean.obtenerdatosws.ObtenerDatosPortType" /]
[property name="customProperties" ]
[ref local="jaxwsCustomProperties" /]
[/property]
[/bean]
[bean id="ObtenerTecnologiaService"class="org.springframework.remoting.jaxws.JaxWsPortProxyFactoryBean" ]
[property name="wsdlDocumentUrl" value="http://localhost:8088/mockObtenerTecnologiaBinding?wsdl" /]
[property name="namespaceUri" value="http://pe.com.externalCompany/bean/ObtenerTecnologiaWS" /]
[property name="serviceName" value="ObtenerTecnologiaService" /]
[property name="portName" value="ObtenerTecnologiaPort" /]
[property name="serviceInterface" value="externalcompany.com.pe.bean.obtenertecnologiaws.ObtenerTecnologiaPortType" /]
[property name="customProperties" ]
[ref local="jaxwsCustomProperties" /]
[/property]
[/bean]
[/beans]
La obtención y configuración de los datos de cada property lo sacamos de la misma URL de cada WebService de esta manera:
- wsdlDocumentUrl => [URL]
- namespaceUri => [wsdl:definitions targetNamespace='XXXX']
- serviceName => [wsdl:service name='XXX']
- portName => [wsdl:port name='XXX']
- serviceInterface => [public interface XXX]
- jaxwsCustomProperties => [PROPERTIES] en milisegundos
No hay comentarios:
Publicar un comentario