I have your same problem.
I haven't received any reply and don't think that I and you will receive any.
For that that I have thought the problem stay on chain of interceptor of FUSE.
I have tried to view the source code of fuce cxf-bc and I have noticed what is the problem.
Create a new interceptor that come before of that of FUSE that give the error do not solve the problem(If fail one interceptor fail all the chain).
For me three are the possible solution.
A)Disable all interceptor. I don't know how is possible and if is possible
B)Modify source code of apache cxf-bc trying to resolve the bug(if this is a bug...)
C)Another solution that try to modify xbean.xml of cxf-bc su or the wsdl of the service(I have tried but with no solution).
I try with B I if find a solution I will tell you it.
I want say that if I see many and many thread with a lot of views and nobody response I think that 2 are possible reason:
1)Nobody knows well FUSE(maybe...but I don't think so)
2)Nobody wants share it knowledge(more and more possible)
I'm trying to solve the problem posted with some debug activity.
I've noticed that the error message come from this line of code
BindingOperationInfo operation = (BindingOperationInfo)message.getExchange().get(BindingOperationInfo.class);
in the org.apache.servicemix.cxfbc.interceptors.JbiInWsdl1Interceptor class.
This object (operation) retrieved is null.
I've printed the Exchange hash set:
org.apache.servicemix.cxfbc.CxfBcConsumer=Endpoint[service: CalcolatriceService, endpoint: CalcolatriceProxy, role: consumer],
and no content is related to the BindingOperationInfo.class.
I've also put in xbean.xml of the consumer component the targetOperation parameter specifing the operation (the only one) to bind, but nothing happens (always the same errror).
I've attached my new SA files (little bit cleaned). The problem seems to be related to the fact that the CXF Provider did not pass the binding operation info required.
Your conclusions are right.
I have noticed the same things few days ago.
I think that a possible solution is this.
Create an interceptor and insert it between the two interceptors
JbiOperationInterceptor and JbiInWsdl1Interceptor, because between the call of theese two interceptor born the problem, and then adding it the right operation for object Binding OperationInfo.
I have tried with FUSE SERVICE FRAMEWORK INTERCEPTOR guide to create an interceptor.
I have builded the interceptor and added it to my web service implementation class and interface but this interceptor is never called by FUSE.
This now is my problem...how correctly create an interceptor?.
I think that solving this problem the solution to the initial problem is more simple.
How you have printed the Exchange hash set?.
i've attached my source code for JbiInWsdl1Interceptor.java, where i simply
use System.out.println() to print the Exchange Hash Set.
protected BindingOperationInfo getOperation(Message message)
. . . .
JbiInWsdl1Interceptor.java 16.3 KB
Even if the problem still remain the same for CXF, at least i've successfully proxied a WSDL through the ESB but with HTTP endpoint.
I've attached here my components (consumer and provider).
I've noticed that calling the consumer endpoint with SOAPUI caused a problem. In particular the request automatically generated was wrong and the so the call failed.
As a workaorund I've generated the xml request envelope pointing directly to the remote WSDL (that i wish to expose), and generated a soap request, always using SOAPUI, and then i've successfully used this generated request with the ESB endpoint obtaining the correct answer.
Hope this can help.