Исключение веб-службы — ссылка без ?wsdl, HTTP GET PATH_INFO

У меня есть простой веб-сервис:

У меня точно такая же проблема. когда я не добавляю "?wsdl" у меня мыльный файл. как я могу избежать этого исключения?

@WebService
@SOAPBinding(style = Style.RPC)
public interface TimeServer {
    @WebMethod
    @WebResult(partName = "time_response")
    String getTimeAsString();

    @WebMethod
    @WebResult(partName = "time_response")
    long getTimeAsElapsed();

}

и подразумевает:

@WebService(endpointInterface = "x.y.z.TimeServer")
public class TimeServiceImpl implements TimeServer {


    public TimeServiceImpl() {}

    @Override
    public String getTimeAsString() {return new Date().toString();}

    @Override
    public long getTimeAsElapsed() {return new Date().getTime();}

}

Я запускаю этот веб-сервис в Jboss As 7.0.1. Все работает хорошо!

Когда я открываю ссылку localhost:8080/project/time?wsdl, все работает хорошо — у меня есть wsdl.

но когда я не добавляю "?wsdl", у меня есть исключение.

14:26:58,192 WARNING [org.apache.cxf.phase.PhaseInterceptorChain] (http-localhost-127.0.0.1-8080-1) Interceptor for {http://x.z.y/}HelloWorld has thrown exception, unwinding now: org.apache.cxf.interceptor.Fault: No such operation: null (HTTP GET PATH_INFO: /project/timenull)
at org.apache.cxf.interceptor.URIMappingInterceptor.handleMessage(URIMappingInterceptor.java:88)
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:263)

и у меня есть этот ответ от сервера:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<soap:Fault>
<faultcode>soap:Server</faultcode>
<faultstring>
     No such operation: null (HTTP GET PATH_INFO: /soap-service/timenull)
</faultstring>
</soap:Fault>
</soap:Body>
</soap:Envelope>

как я могу избежать этого исключения?

Будет ли лучше, если клиент увидит другое сообщение вместо этого ответа об ошибке? как я могу отправить другой XML, когда клиент открывает ссылку без "?wsdl"?

спасибо


person grep    schedule 26.06.2014    source источник


Ответы (2)


Веб-сервисы не будут поддерживать HTTP GET. Если вы вводите URL-адрес службы, он напрямую создает HTTP GET. Вот почему он отвечает ошибкой No such operation

Вместо этого вам нужно сделать SOAP POST, чтобы получить ответ от веб-службы. Напишите для этого клиент веб-сервиса. Вы можете использовать эту ссылку для создания веб-сервиса клиенты

person Dinal    schedule 26.06.2014
comment
Как вам грустно, нет возможности избежать этого исключения? или я не могу перенаправить на wsdl? или я не могу отправить другой ответ об ошибке? Я знаю, как написать клиент веб-сервиса. Я уже сделал это. У меня есть еще один вопрос. Я хочу избежать или отключить это исключение. - person grep; 26.06.2014
comment
Вы получаете эту ошибку при нажатии на URL-адрес службы в браузере, верно? Это означает, что ваш запрос даже не поступает в сервис. Так что нет никакого способа бросить исключение. Вы можете попробовать Urlrewrite, если хотите перенаправить на URL-адрес ?wsdl. - person Dinal; 26.06.2014
comment
Да, я получаю эту ошибку, когда открываю ссылку в браузере. что вы имеете в виду, когда говорите мне, что можете попробовать Urlrewrite? - person grep; 26.06.2014
comment
Проверьте эту ссылку: tuckey.org/urlrewrite. Вы также можете попробовать apache mod_rewrite : http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html - person Dinal; 26.06.2014

@grep Я вижу этот пост немного старым, но все же постараюсь ответить, если кто-то еще с похожей проблемой сможет. Ну, у меня была такая же проблема, и я задавался вопросом, в чем причины этого. вот два шага, которые я попробовал и исправил проблему. убедитесь, что вы можете получить доступ к wsdl в браузере.

  1. Закройте SOAPUI, удалите файл soapui_workspace.xml, созданный в папке пользователя в папке C:/users.
  2. Перезапустите Soap_ui и откройте «Настройки»> «Настройки прокси».
  3. Измените с автоматического на None.
  4. Создать новый проект. Это решило мою проблему и получило ответ от веб-сервиса в SOAPUI.

    Во-вторых, в этом случае убедитесь, что вы правильно развернули веб-сервис, как указано @Dinal.

person Aman Verma    schedule 21.01.2015