Websercice с SOAPBinding.ParameterStyle.BARE требует, чтобы все методы (включая не WEBMETHOD) имели только один параметр в качестве входных данных - PullRequest
1 голос
/ 26 июля 2011

Я использую cxf 2.x для разработки веб-сервиса. Вот мой класс веб-сервиса

@WebService(name = "XXXWS", targetNamespace = "http://www.XXX.com/XXXWS", portName = "XXXWSPort", serviceName = "XXXWSService")
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
public class XXXWS {

    @WebMethod(operationName = "XXXMethod", action = "http://www.XXX.com/XXXWS/XXXX")
    public XXXResponse XXXMethod(
            @WebParam(name = "XXXRequest") XXXRequest xxxRequest) {
        // implement code here

        return response;
    }

  private  static String getServiceURL(Environment env, String actionCode){ //<-- RED CROSS here

        //implement code here
        return url;     
    }
}

В Eclipse есть метод RED CROSS в методе getServiceURL (это обычный метод, а не WEBMETHOD). Это говорит

 Multiple markers at this line
        - Document Literal Bare operations must have unique XML elements for the input and output messages across all operations on the 
         Web Service : '{http://www.XXX.com/XXXWS}getServiceURL'
        - Document literal bare methods may have only one non-header IN parameter

Так что если я просто использую только один параметр в качестве ввода для метода getServiceURL ИЛИ я использую SOAPBinding.ParameterStyle.WRAPPED тогда красный крест исчезнет. Но мне нужно иметь 2 параметра здесь.

Мой вопрос: если мне нужно использовать 2 параметра здесь и при этом использовать SOAPBinding.ParameterStyle.BARE, как я могу удалить КРАСНЫЙ КРЕСТ. Я думаю, что есть способ настроить Eclipse для удаления такого рода ошибки

Ответы [ 2 ]

3 голосов
/ 29 февраля 2016

Похоже, вы столкнулись с ошибкой затмения, которая была недавно исправлена ​​.

Для тех, кто сталкивается с этим, и кто не хочет загружать обновление с исправлением, в отчете об ошибке упоминается этот обходной путь, который решил проблему для меня (заметьте, однако, что это не может быть долгосрочным вариантом для всех, поскольку это также может скрывать «допустимые» ошибки, но в большинстве случаев, когда Maven / CXF генерирует ваши классы WS, это не должно иметь значения):

  1. Перейти к свойствам вашего проекта.
  2. Перейдите к Java Compiler> Annotation Processing> Factory Path.
  3. Найдите запись для org.eclipse.jst.ws.annotations.core (в моем случае она была последней, поскольку я только недавно включил ее) и снимите флажок.
  4. Разрешить затмению перестраивать, и подсветка "ошибки" должна исчезнуть.
0 голосов
/ 13 сентября 2011

Я понял: вы должны создать интерфейс SEI для этого веб-сервиса, а затем класс реализации этого SEI.метод с несколькими параметрами будет закрытым методом, который останется только в классе реализации.Все будет отлично.Нет больше красного креста.

...