0

JAX WS は次のものを生成しています (スニペットのみを示します)。

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
   <S:Body>
      <ns2:capMessageResponse xmlns:ns2="http://www.########.com" xmlns:ns3="test:one:two:1.2" xmlns:ns4="test:one:two:three:1.1">
         <ns3:alert>
            <ns3:identifier>1247275</ns3:identifier>

これを生成するメソッドは次のとおりです。

@WebMethod(operationName = "capMessage", action = "urn:getCapMessages")
    @WebResult(name = "alert", targetNamespace="test:one:two:1.2")
    public List<AlertType> getCapMessage(String messageIds,String uniqueId,boolean skipHtmlStrip) throws CommsMessageException {
        try {

出力から capMessageResponse を削除し、xmlns 属性を alert 属性に移動する必要があります。

とにかくこれを行うことはありますか?

4

2 に答える 2

0

Java Method シグネチャから、DOCUMENT/WRAPPED スタイルを使用しているように見えます。確認できますか?その場合、現在のメソッド シグネチャでは、期待していることを実行できません。

メソッド引数を保持する新しいクラスを作成し、BARE スタイルに切り替えると、探している出力を取得できます。さらに、コレクションの戻り値を保持する別のクラスを作成する必要がある場合もあります。

public List<AlertType> getCapMessage(CapMessageRequest request) throws ...
于 2013-01-11T03:39:30.423 に答える
0

必要な出力を実現するには、サービス実装 Bean で次の注釈を指定します。

    @SOAPBinding(style = Style.DOCUMENT,parameterStyle=SOAPBinding.ParameterStyle.BARE) 

この注釈は、Web サービス バインディングがDocumentスタイル (デフォルトであり、見た目から既に使用しているもの) である場合にのみ有効です。

ただし、この選択には注意が必要です

  1. メッセージ ペイロードはオペレーション名でラップされなくなりました。

  2. 上記の 1. の直接の結果として、同じ Web サービスの別の操作で同じエンティティ/引数タイプを使用することはできません。これは、ディスパッチャーがメッセージを正常にディスパッチするための情報を持っていないためです。

  3. また、1 (関連情報の欠如) の結果として、Web サービス操作は複数のパラメーターを受け入れることができなくなります。

于 2013-01-11T06:08:11.433 に答える