i deployed same ws-proxy in 4.5.1 , 4.6. 4.5.1 works correctly, 4.6 get:
error - axisengine endpoint reference (epr) operation not found /services/registro.registrohttpsoap11endpoint , wsa action = . if epr reachable, please contact server administrator.
the source following:
<proxy xmlns="http://ws.apache.org/ns/synapse" name="registro" transports="http" statistics="disable" trace="disable" startonload="true"> <target> <outsequence> <send/> </outsequence> <endpoint> <address uri="http://localhost:15080/sigem_registropresencialws/services/servicioregistrowebservice"/> </endpoint> </target> <publishwsdl uri="http://localhost:15080/sigem_registropresencialws/services/servicioregistrowebservice?wsdl"/> <description></description> </proxy>
what have 4.6. make work?
thanx.
to enhance esb performance pass-through transport has been enabled default starting esb 4.6.0 version not case esb 4.5.1. seems proxy service depends on soap body based dispatching pass-through transport not support soap body based dispatching. soap body based dispatching build message body , use first element's local name dispatching effect proxy performance badly reason not supported in pass-through transport. in process fix limitation future esb releasees without loosing advantage of pass-through transport.
btw moment can use 1 of following workarounds.
when sending messages proxy service append operation name endpoint url
e.g -
http://servername/app/servicename/operationname
modify client level code send expected soapaction value ( try-it case)
i'm not sure backend service's wsdl defined "" value of soapaction if case may modified backend service have value other "" per each operation. example jax-ws services can use @webmethod annotation this.
e.g - @webmethod(action="xxxx")
note : in case if backend wsdl defining value other "" soapaction while client send message soapaction="" it's violation of service contract client , need fixed on client level.
Comments
Post a Comment