[ https://issues.apache.org/jira/browse/CXF-5738?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15033791#comment-15033791 ]
Thierry RAMANAMPANOHARANA commented on CXF-5738: ------------------------------------------------ The difference between CXF 2.6 and CXF 2.7 regarding the operation look-up is that when the SOAPAction is provided but no operations are bound to the given action name then in 2.7 a fault is thrown: {code:java} public static class SoapActionInAttemptTwoInterceptor extends AbstractSoapInterceptor { public SoapActionInAttemptTwoInterceptor() { super(Phase.PRE_LOGICAL); } public void handleMessage(SoapMessage message) throws Fault { BindingOperationInfo boi = message.getExchange().getBindingOperationInfo(); if (boi == null) { return; } String action = getSoapAction(message); if (StringUtils.isEmpty(action)) { return; } SoapOperationInfo soi = boi.getExtensor(SoapOperationInfo.class); if (soi == null || action.equals(soi.getAction())) { return; } Object o = boi.getOperationInfo().getInput().getExtensionAttribute(JAXWSAConstants.WSAM_ACTION_QNAME); if (o == null) { o = boi.getOperationInfo().getInput().getExtensionAttribute(JAXWSAConstants.WSAW_ACTION_QNAME); } if (o != null && action.equals(o.toString())) { return; } throw new Fault("SOAP_ACTION_MISMATCH", LOG, null, action); } } {code} The work-around consisting of removing the SOAPAction from the message works indeed but the cause of the seems to be the fact that CXF does not implement the [Default Action pattern|http://www.w3.org/TR/ws-addr-wsdl/#defactionwsdl11] described by WSDL. In 2.7, the correct approach was taken so that a fault is thrown when no operations are found. It is just that CXF forgot to associate the default action pattern to the operation. > given soap action does not match any operation > ---------------------------------------------- > > Key: CXF-5738 > URL: https://issues.apache.org/jira/browse/CXF-5738 > Project: CXF > Issue Type: Bug > Components: Soap Binding > Affects Versions: 2.7.11 > Reporter: Nicola > > I'm generating a service from an existing wsdl > (http://195.250.34.59/temp/original.wsdl), after creating the service the cxf > generated wsdl has some small difference from the original one > (http://195.250.34.59/temp/cxf_generated.wsdl), if I create client methods, > using for example soapui, from the cxf generated wsdl all is fine but if I > use the original wsdl the requests fail with the error: > "the given soapaction does not match an operation" > the problem is the SOAPAction http header: > cxf expects no SOAPAction header or an empty one, if you look at the wsdl > generated by cxf you can see a section not present in the original wsdl that > define an empty soap action: > <soap:operation soapAction="" style="document"/> > after this section there is also the original one that define: > <soap:operation soapAction="http://test.example.com//updateList"/> > I defined an interceptor that remove the SOAPAction http header if present > and this workaround the problem > cxf should not modify the original wsdl or however should accept calls > generated using the provided wsdl -- This message was sent by Atlassian JIRA (v6.3.4#6332)