camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From unmarshall <unmarsh...@gmail.com>
Subject Camel CXF Producer should allow setting of BindingOperationInfo
Date Wed, 10 Nov 2010 11:05:52 GMT

Hi All,

If i have a route in which one or more external webservices are called and
then i want to expose this entire route as a service then the recommended
way is to add the starting endpoint as a cxf endpoint.

So the route becomes:

from("cxf:bean:routeEntryEndpoint")
.convertBodyTo(String.class)
.to("xslt:converter1.xslt") //possibly convert the incoming request to
create a request for the external WS
.to("cxf:bean:externalWS1Endoint");

There can be many more endpoints in the route but for brevity i have kept it
short. So everything works fine till the endpoint which represents the
external webservice is reached. This web service has its own set of
operations defined in the separate wsdl. So now when a call goes to this
endpoint then an exception is thrown:

] Exception: java.lang.IllegalArgumentException: BindingOperationInfo must
be specified
14:28:13.461 WARN  [227137515@qtp-915227122-1 -
/cxf/salesOrderDetailsForClaimsProcessing]
o.a.cxf.phase.PhaseInterceptorChain [Slf4jLogger.java:92] - Interceptor for
{http://www.example.com/cmservices}SalesOrderDetailsForClaimProcessingQueryResponse_In_SAService#{http://www.example.com/cmservices}ReadSalesOrderDetailsForClaimProcessing
has thrown exception, unwinding now
org.apache.cxf.interceptor.Fault: BindingOperationInfo must be specified
        at
org.apache.camel.component.cxf.CxfConsumer$1.checkFailure(CxfConsumer.java:123)
~[na:na]

To make this work a custom processor had to be included before calling the
external WS endpoint which would explicitly set the Operation Name and
Operation Namespace on the exchange. 

Ideally this should be a property on the endpoint. I tried using the
defaultOperation and defaultOperationNamespace but when i looked at the
CxfProducer code then i found that this would not work as it never tries to
read these properties.

Is there already a way apart from explicitly using a custom processor? If
not then there is a strong case to include that.

Best Regards,
Madhav
-- 
View this message in context: http://camel.465427.n5.nabble.com/Camel-CXF-Producer-should-allow-setting-of-BindingOperationInfo-tp3258474p3258474.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Mime
View raw message