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

Я использую 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 у метода 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 для удаления такого рода ошибок.


person David    schedule 26.07.2011    source источник


Ответы (2)


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

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

  1. Зайдите в свойства вашего проекта.
  2. Перейдите к Java Compiler> Annotation Processing> Factory Path.
  3. Найдите запись для org.eclipse.jst.ws.annotations.core (в моем случае она была мертва последней, так как я только недавно ее включил) и снимите флажок.
  4. Разрешите eclipse выполнить перестройку, и выделение «ошибки» должно исчезнуть.
person Amos M. Carpenter    schedule 29.02.2016

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

person David    schedule 12.09.2011