The endpoint reference (EPR) for the Operation not found is
Asked Answered
C

15

17

I have been struggling with the following error the last couple of days can you please help!

I generated my server and client code using the wsdl2java tool from a wsdl 2.0 file. When invoking the webservice I am getting the following error:

org.apache.axis2.AxisFault: The endpoint reference (EPR) for the
Operation not found is
/axis2/services/MyService/authentication/?username=Denise345&password=xxxxx
and the WSA Action = null

My service is displayed on the axis2 webpage with all available methods. Here is the output from TcpMon

==============
Listen Port: 8090
Target Host: 127.0.0.1
Target Port: 8080
==== Request ====
GET /axis2/services/MyService/authentication/?username=Denise345&password=xxxxx
HTTP/1.1
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
SOAPAction: ""
User-Agent: Axis2
Host: 127.0.0.1:8090

==== Response ====
HTTP/1.1 500 Internal Server Error
Server: Apache-Coyote/1.1
Content-Type: application/xml;charset=UTF-8
Transfer-Encoding: chunked
Date: Thu, 12 May 2011 15:53:20 GMT
Connection: close

12b
<soapenv:Reason xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
  <soapenv:Text xml:lang="en-US">The endpoint reference (EPR) for the
Operation not found is
/axis2/services/MyService/authentication/?username=Denise345&password=xxxxx
and the WSA Action = null</soapenv:Text></soapenv:Reason>
0

==============

I am using:

  • axis2-1.5.4
  • Tomcat 7.0.8
  • wsdl 2.0 file

Please help!

Combes answered 12/5, 2011 at 16:36 Comment(0)
Z
27

In my case it was caused by a wrong Content-Type in the HTTP POST. Setting it to text/xml solved the problem.

Zoroastrianism answered 27/9, 2013 at 23:35 Comment(1)
You a genius bro tnx bbBleach
T
16

Try adding ?wsdl to the string.

Troika answered 30/6, 2014 at 15:15 Comment(1)
What does this query string do/mean?Clothe
H
7

As described by Eran Chinthaka at http://wso2.com/library/176/

If Axis2 engine cannot find a service and an operation for a message, it immediately fails, sending a fault to the sender. If service not found - "Service Not found EPR is " If service found but not an operation- "Operation Not found EPR is and WSA Action = "

In your case the service is found but the operation not. The Axis2 engine uses SOAPAction in order to figure out the requested operation and, in your example, the SOAPAction is missing, therefore I would try to define the SOAPAction header

Hassett answered 28/7, 2014 at 16:14 Comment(0)
C
5

It happens because the source WSDL in each operation has not defined the SOAPAction value.

e.g.

<soap12:operation soapAction="" style="document"/>  

His is important for axis server.

If you have created the service on netbeans or another, don't forget to set the value action on the tag @WebMethod

e.g. @WebMethod(action = "hello", operationName = "hello")

This will create the SOAPAction value by itself.

Crosswise answered 28/8, 2014 at 20:13 Comment(0)
A
4

This error is coming because while calling the service, it is not getting the WSDL file of your service.

Just check whether WSDL file of your service is there--> run server and from browser run axis 2 apps on local host and check the deployed services and click on your service, then it shows WSDL file of your service.....or check the service path in your client file.

I hope it may help you to resolve the problem.

Amerce answered 28/2, 2012 at 9:27 Comment(1)
For me, it was same as above. i.e. I was pointing to wrong WSDL file, which off-course did not had the desired operation. Thanks.Overweary
P
4

Action is null means that no Action in given SOAP Message (Request XML). You must set Action before SOAP call:

java.net.URL endpoint = new URL("<URL>"); //sets URL

MimeHeaders headers = message.getMimeHeaders(); // getting MIME Header

headers.addHeader("SOAPAction", "<SOAP Action>"); //add Action To Header

SOAPMessage response = soapConnection.call(<SOAPMessage>, endpoint); //then Call

soapConnection.close(); // then Close the connection
Principled answered 29/3, 2014 at 5:23 Comment(0)
A
4

I had this same problem using curl to send a soap request. Solved it by adding "content-type: text/xml" to the http header.

I hope this helps someone.

Austro answered 24/10, 2016 at 13:51 Comment(2)
This helped me. I was using "application/xml" and when I switched to "text/html" the problem went away...Wickner
Sorry if this is a dummy question but how this could be added to the http header?Nullity
W
2

This can be solved by disabling validation

<proxy>
    <!-- . . . -->
    <parameter name="disableOperationValidation">true</parameter>
</proxy>
Warranty answered 9/7, 2018 at 7:27 Comment(1)
Your solution worked for wso2 micro integrator 1.2.0!Ogg
W
1

Late answer but:

I see you do a GET - should be a POST ?

Worldly answered 22/5, 2015 at 15:12 Comment(0)
A
0

try removing the extra '/' after the operation name (authentication) when invoking through the client

/axis2/services/MyService/authentication?username=Denise345&password=xxxxx
Aerology answered 25/5, 2011 at 23:17 Comment(0)
P
0

It seems don't find wsdl file..
I've solved adding wsdlLocation parameter at javax.jws.WebService annotation

Paralysis answered 28/1, 2014 at 10:41 Comment(0)
C
0

By removing cache wsdl-* files in /tmp folder, my problem was solved

see https://www.drupal.org/node/1132926#comment-6283348

be careful about permission to delete

I'm in ubuntu os

Candler answered 14/5, 2015 at 14:38 Comment(0)
S
0

On Websphere Application Server, in the same situation, it helped deleting the Temp folders while the server was stopped.

I ran into the situation when the package of the service changed.

Smilacaceous answered 27/1, 2016 at 10:58 Comment(0)
B
0

Open WSDL file and find:

<soap:operation soapAction="[actionNameIsHere]" style="document"/>

Add to the requests header [request send to service]:

'soapAction' : '[actionNameIsHere]'

This work for me.

For devs. using node-soap [ https://github.com/vpulim/node-soap ] - example:

var soap = require('soap');
var options = {
   ...your options...
   forceSoap12Headers: true
}
soap.createClient(
        wsdl, options,
            function(err, client) {
                if(err) {
                    return callBack(err, result);
                }
                client.addHttpHeader('soapAction', '[actionNameIsHere]');
                ...your code - request send...
            });
Byrn answered 13/6, 2019 at 9:55 Comment(0)
T
0

I got this error because the SOAP request I was sending to the server was malformed and had an empty Body

In this case the error message from the server is misleading and can be solved changing the request content, without changing anything about operations, URLs, WSDL, etc

Technicality answered 4/11, 2021 at 11:58 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.