1

我正在使用 cxf 2.x 开发 web 服务。这是我的网络服务类

@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 方法有一个 RED CROSS(这只是一个常规方法,而不是 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,那么 RED CROSS 将消失。但我需要在这里有 2 个参数。

我的问题是:如果我需要在这里使用 2 个参数并且仍然使用 SOAPBinding.ParameterStyle.BARE,我该如何删除 RED CROSS。我认为有一种方法可以配置 Eclipse 来消除这种错误

4

2 回答 2

4

看起来您遇到了最近修复的 eclipse 错误

对于遇到此问题且不想使用修复程序加载更新的任何人,错误报告提到了为我解决问题的解决方法(但请注意,它可能不是每个人的长期选择,因为这可能还隐藏“合法”错误,但在大多数情况下,Maven/CXF 生成您的 WS 类,这无关紧要):

  1. 转到项目的属性。
  2. 导航到Java Compiler> Annotation Processing> Factory Path
  3. Find the entry for org.eclipse.jst.ws.annotations.core (in my case it was dead last since I'd only recently enabled it) and uncheck it.
  4. Allow eclipse to do a rebuild, and the "error" highlighting should be gone.
于 2016-02-29T00:45:44.327 回答
0

我想通了:您必须为该 Web 服务创建一个接口 SEI,然后为该 SEI 创建一个实现类。具有多个参数的方法将是仅保留在实现类中的私有方法。一切都会好起来的。没有红十字了。

于 2011-09-12T20:01:51.667 回答