Tengo un servicio que hace de proxy. La peticion que le llega la envia a otro Servicio Web y este otro devuelve la respuesta.
Por un lado tengo un modulo: cliente-servicio_externo.
Por otro lado tengo el modulo: servidor-proxy.
El cliente es una dependencia del servidor-proxy, para que mediante la configuracion de Spring, llamar al servicio externo.
<cxf:bus bus="clientPaxaseBus"> <cxf:features> <cxf:logging /> </cxf:features> <cxf:inInterceptors> <ref bean="checkResponse" /> <bean class="org.apache.cxf.ws.security.wss4j.DefaultCryptoCoverageChecker" /> </cxf:inInterceptors> <cxf:outInterceptors> <ref bean="SignRequest" /> </cxf:outInterceptors> </cxf:bus> <jaxws:client id="clientPaxaseConsultaIdentidad" address="#{url}/consultarIdentidad" bus="clientPaxaseBus" serviceClass="es.map.xml_schemas.PeticionPortType"/>
Pongo una configuracion de BUS generica, para todos los clientes. Especifico el nombre del bus: bus=»clientPaxaseBus».
<bean id="logInbound" class="org.apache.cxf.interceptor.LoggingInInterceptor" /> <bean id="logOutbound" class="org.apache.cxf.interceptor.LoggingOutInterceptor" /> <bean id="cdi" class="es.depontevedra.soap.interoperabilidad.identidad.services.spi.ConsultaIdentidadEnPaxase" /> <jaxws:endpoint id="cdiService" implementor="#cdi" address="/consultaidentidad" publishedEndpointUrl="http://${service.host}:${service.port}/${service.wsname}/consultaidentidad"> <jaxws:inFaultInterceptors> <ref bean="logInbound" /> </jaxws:inFaultInterceptors> <jaxws:inInterceptors> <ref bean="logInbound" /> </jaxws:inInterceptors> <jaxws:outFaultInterceptors> <ref bean="logOutbound" /> </jaxws:outFaultInterceptors> <jaxws:outInterceptors> <ref bean="logOutbound" /> </jaxws:outInterceptors> </jaxws:endpoint>
Evito la configuracion bus, poniendo los interceptors a mano en cada endpoint. No he sido capaz de generar un cxf:bus generico nombrando o etiquetandolo de alguna manera. Esta solucion no me gusta, pero funciona. A ver si encuentro una manera mas limpia…