Ссылка на конечную точку (EPR) для операции не найдена

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

Я создал код сервера и клиента, используя инструмент wsdl2java, из Файл wsdl 2.0. При вызове webservice я получаю следующую ошибку:

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

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

Ответ 1

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

Ответ 2

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

Ответ 3

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

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

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

Ответ 4

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

например.

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

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

Если вы создали службу на netbeans или другой, не забудьте установить действие значения в теге @WebMethod

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

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

Ответ 5

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

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

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

Ответ 6

Действие равно null означает, что в заданном SOAP-сообщении (Request 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

Ответ 7

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

Я надеюсь, что это поможет кому-то.

Ответ 8

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

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

Ответ 9

попробуйте удалить дополнительные "/" после имени операции (аутентификация) при вызове через клиент

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

Ответ 10

Кажется, не найти wsdl файл..
Я решил добавить параметр wsdlLocation в аннотацию javax.jws.WebService

Ответ 11

Удалив файлы кэша wsdl- * в папке /tmp, моя проблема была решена

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

будьте осторожны с разрешением на удаление

Я нахожусь в ubuntu os

Ответ 12

На сервере приложений Websphere в той же ситуации он помог удалить папки Temp, когда сервер был остановлен.

Я столкнулся с ситуацией, когда пакет службы изменился.

Ответ 13

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

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

Ответ 14

Откройте файл 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...
            });