Ссылка конечной точки (EPR) для операции не найдена - PullRequest
12 голосов
/ 12 мая 2011

Я боролся со следующей ошибкой в ​​последней паре дней вы можете помочь!

Я сгенерировал код своего сервера и клиента с помощью инструмента wsdl2java из WSDL 2.0 файл. При вызове веб-сервиса я получаю следующую ошибку:

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

Мой сервис отображается на веб-странице axis2 всеми доступными способами. Вот вывод из 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

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

Я использую:

  • axis2-1.5.4
  • Tomcat 7.0.8
  • файл wsdl 2.0

Пожалуйста, помогите!

Ответы [ 14 ]

13 голосов
/ 28 сентября 2013

В моем случае это было вызвано неправильным Content-Type в HTTP POST.Установка text/xml решила проблему.

11 голосов
/ 30 июня 2014

Попробуйте добавить ?wsdl к строке.

6 голосов
/ 28 июля 2014

Как описано Эраном Чинтакой в ​​http://wso2.com/library/176/

Если движок Axis2 не может найти службу и операцию для сообщения, он сразу же выходит из строя, отправляя сообщение об ошибке отправителю.Если служба не найдена - «Служба не найдена EPR is» Если служба найдена, но не операция- «Operation Not found EPR is и WSA Action =»

В вашем случае служба найдена, но операцияне.Движок Axis2 использует SOAPAction для определения запрошенной операции, и в вашем примере SOAPAction отсутствует, поэтому я бы попытался определить заголовок SOAPAction

5 голосов
/ 29 августа 2014

Это происходит потому, что исходный WSDL в каждой операции не определил значение SOAPAction.

например.

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

Его важно для оси сервера.

Если вы создали службу на NetBeans или ином, не забудьте установить действие value для тега @ WebMethod

например. @WebMethod (action = "hello", operationName = "hello")

Это создаст само значение SOAPAction.

4 голосов
/ 28 февраля 2012

эта ошибка появляется, потому что при вызове службы она не получает файл wsdl службы ur.

jst проверьте, есть ли файл wsdl службы ur -> запустите сервер и из браузера запустите приложения оси 2 на локальном хосте, проверьте развернутые службы и нажмите на свой сервис, после чего отобразится файл wsdl службы ur ... ... или проверьте путь службы в файле клиента.

Надеюсь, это поможет вам решить проблему ...

2 голосов
/ 24 октября 2016

У меня была такая же проблема при использовании curl для отправки запроса на мыло. Решил это, добавив «content-type: text / xml» в заголовок http.

Надеюсь, это кому-нибудь поможет.

2 голосов
/ 29 марта 2014

Action is null означает, что в данном сообщении SOAP нет действия (запрос XML). Вы должны установить действие до вызова SOAP:

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
1 голос
/ 22 мая 2015

Поздний ответ, но:

Я вижу, вы делаете GET - должен быть POST?

0 голосов
/ 13 июня 2019

Откройте файл WSDL и найдите:

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

Добавить в заголовок запроса [запрос отправлен на сервис]:

'soapAction' : '[actionNameIsHere]'

Эта работа для меня.

Для разработчиков. использование node-soap [https://github.com/vpulim/node-soap] - пример:

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...
            });
0 голосов
/ 09 июля 2018

Это можно решить, отключив проверку

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