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 есть метод 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 ответа

Решение

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

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

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

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