私は wsdl を持っており、そこから apache cxf を使用してサーバー スタブを生成しました。問題は、私が展開する新しい wsdl が最初のものと異なるため、古いものに対する SOAP 要求が新しいものに対して機能しないことです。soapUI を使用してテストします。新しいものには、この奇妙な名前空間initがあります:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:init="http://initiator.clientprovisioning_1_0.mdm.smarttrust.com/">
<soapenv:Header/>
<soapenv:Body>
<init:cpDiscovery.Response>
古い SOAP メッセージには次のようなものはありませんでした:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<cpDiscovery.Response>
必要な追加情報を提供します。私はこれを2日間解決しようとしています。助けてください。
EDIT このinitプレフィックスは、Java パッケージの最初の文字に依存します。たとえば、クラスが me.mycompany.example プレフィックスにある場合:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:exam="http://example.mycompany.net/">
<soapenv:Header/>
<soapenv:Body>
<exam:cpDiscovery.Response>
EDIT http://cxf.apache.org/docs/developing-a-service.html#DevelopingaService-AnnotatingtheCode これは述べています
targetNamespace プロパティ サービスが定義されているターゲット名前空間を指定します。このプロパティが指定されていない場合、ターゲット名前空間はパッケージ名から派生します。
どうすればこれを取り除くことができますか?