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

∥☆過路亽.° 提交于 2019-11-26 23:34:39

问题


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!


回答1:


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




回答2:


Try adding ?wsdl to the string.




回答3:


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




回答4:


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.




回答5:


this error is coming because while calling the service it is not getting the wsdl file of ur service.

jst check whether wsdl file of ur 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 ur service.....or check the service path in your client file.

i hope it may help u to resolve the problem...




回答6:


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



回答7:


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.




回答8:


Late answer but:

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




回答9:


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

/axis2/services/MyService/authentication?username=Denise345&password=xxxxx



回答10:


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




回答11:


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




回答12:


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.




回答13:


This can be solved by disabling validation

<proxy>
    <!-- . . . -->
    <parameter name="disableOperationValidation">true</parameter>
</proxy>



回答14:


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...
            });


来源:https://stackoverflow.com/questions/5981379/the-endpoint-reference-epr-for-the-operation-not-found-is

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!