2

私はjbossws-cxfを使用してWebサービスをいじっています。問題は、使用している実装ではなく、コードの生成方法にあると思います。これが、Webサービスの注釈付きの私のpojoです。

package com.matt.test.ws;

import javax.jws.WebMethod;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;

@WebService
@SOAPBinding(style = SOAPBinding.Style.DOCUMENT)
public class JbossWSTestImpl {
    private String[] statuses = {"Hello","JbossWS is cool","GoodBye","l33t hax0rz"};
    @WebMethod
    @WebResult(name="status")
    public String getStatus(){
        return statuses[new java.util.Random().nextInt(3)];
    }

}

(soapUIを使用して)Webサービスをテストしたときのsoapの応答は

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
  <ns2:getStatusResponse xmlns:ns2="http://ws.test.matt.com/">
     <status>Hello</status>
  </ns2:getStatusResponse>
  </soap:Body>
</soap:Envelope>

wsdlファイルを手動で編集して、「ns2」という名前空間を変更し、応答を別のタグでラップできるようにする方法はありますか。私が欲しいのは

<soap:Envelope ...>
   <soap:Body>
      <MyWSResponse xmlns="http://ws.test.matt.com/">
         <status>Hello</status>
      </MyWSResponse>
   <soap:Body>
<soap:Envelope>

それを変更できる、使用していない注釈はありますか?現時点では、wsdlをそのように変更する方法を見つけていません。

更新: soapリクエストを正しいタグに変更する@WebServiceように@WebService(targetNamespace="http://MyWSResponse")変更しましたが、soap応答メッセージは引き続きMyWSResponseではなくns2を使用します。

4

1 に答える 1

2

attribute次のように、WebService注釈に新しいものを追加する必要があります。

@WebService(targetNamespace="http://ws.test.matt.com/")

指定しない場合はtargetNamespacepackageが使用されます。

于 2010-09-01T04:48:44.363 に答える