SOAP Operation not found if WSA Action is null

25 Views Asked by At

There is an old Axis2 V1.6.3 server which I tried to upgrade to 1.8.2.

After the upgrade, server responds for all SOAP client requests:

org.apache.axis2.AxisFault: 
The endpoint reference (EPR) for the Operation not found is https://<servername>:8443/axis2/services/<ServiceName> and the WSA Action = null.
If this EPR was previously reachable, please contact the server administrator

This could be easily fixed if SOAP clients would add a HTTP header

"SOAPAction: urn:<operationName>" 

However, I have no control of the clients. All I can change is the server side. Old clients are out and must be still supported. Old Clients do not send HTTP Headers.

Old server obviously took first child element of the request and used it as operation name.

This is what clients are sending:


curl --insecure -v -X POST https://<servername>:8443/axis2/services/<ServiceName>\
  --header "Content-Type: text/xml;charset=UTF-8" \
  --data '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ccar="http://...."> \
            <soapenv:Header>\
            </soapenv:Header>\
            <soapenv:Body>\
                <ccar:<operationName1>\
                    <ccar:identifier>00123456</ccar:identifier>\
                </ccar:operationName1> \
            </soapenv:Body>\
        </soapenv:Envelope>'

How should I configure the Axis2 server to support such requests?

This is some Server Code:

@WebService(name="ServiceName")
@SOAPBinding(style=SOAPBinding.Style.RPC)
public class Service {
    @WebMethod(action="operationName1")
    public OMElement operationName1(OMElement request) {
            ...
        }
        ...
}
0

There are 0 best solutions below