1

cxf 2.x を使用して Web サービスを開発しています。ここに私の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 に赤十字があります (これは通常のメソッドであり、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 メソッドの入力として 1 つのパラメーターのみを使用するか、SOAPBinding.ParameterStyle.WRAPPED を使用すると、赤い十字が消えます。しかし、ここには 2 つのパラメーターが必要です。

私の質問は、ここで 2 つのパラメーターを使用する必要があり、まだ SOAPBinding.ParameterStyle.BARE を使用する必要がある場合、赤十字を削除するにはどうすればよいですか。この種のエラーを取り除くためにEclipseを設定する方法があると思います

4

2 に答える 2

4

最近修正された Eclipse のバグに遭遇したようです。

これに遭遇した人で、修正を含むアップデートをロードしたくない人のために、バグ レポートには、問題を解決したこの回避策が記載されています (ただし、これはすべての人にとって長期的な選択肢ではないことに注意してください。また、「正当な」エラーを非表示にしますが、Maven/CXF が WS クラスを生成するほとんどの場合、問題にはなりません):

  1. プロジェクトのプロパティに移動します。
  2. Java Compiler> Annotation Processing>に移動しFactory Pathます。
  3. のエントリを見つけてorg.eclipse.jst.ws.annotations.core(私の場合は、最近有効にしたばかりなので最後に死んでいました)、チェックを外します。
  4. Eclipse が再構築できるようにすると、「エラー」の強調表示が消えます。
于 2016-02-29T00:45:44.327 に答える
0

私はそれを理解しました:そのWebサービスのインターフェイスSEIを作成してから、そのSEIの実装クラスを作成する必要があります。複数のパラメーターを持つメソッドは、実装クラスにのみとどまるプライベート メソッドになります。何もかも良くなるだろう。もう赤い十字はありません。

于 2011-09-12T20:01:51.667 に答える