1

WSDL2Java を使用してクライアント プロキシを構築しています。照会している Web サービスには、WSDL に記載されているように WSA ポリシーを適用する必要があります。

コードを生成する方法は次のとおりです(Antタスク)

<java classname="org.apache.cxf.tools.wsdlto.WSDLToJava">
    <arg value="-p" />
    <arg value="@{package}" />
    <arg value="-client" />
    <arg value="-exsh" />
    <arg value="true" />
    <arg value="-verbose" />
    <arg value="-mark-generated" />
    <arg value="-b" />
    <arg value="dev/jaxb-bindings.xml" />
    <arg value="-d" />
    <arg value="gen" />
    <arg value="@{wsdl}" />
    <classpath>
        <path refid="cxf.classpath" />
    </classpath>
</java>

ターゲット WSDL は次のとおりです。

(最初の 2 つだけが WSA を適用します)

からのフラグメントDealService:

<wsdl:service name="DealService">
    <wsdl:port name="wsHttp_DealServiceEndPoint" binding="tns:wsHttp_DealServiceEndPoint">
        <soap12:address location="https://edwin.eurodw.eu/edservices/2.3/DealService.svc" />
        <wsa10:EndpointReference>
            <wsa10:Address>https://edwin.eurodw.eu/edservices/2.3/DealService.svc</wsa10:Address>
        </wsa10:EndpointReference>
    </wsdl:port>
</wsdl:service>

結果の注釈付きインターフェース ( IDealService) には@Addressing注釈がありません。手動で追加する必要があります

@WebService(targetNamespace = "http://edwin.eurodw.eu/EDServices/2.2", name = "IDealService")
@XmlSeeAlso({ObjectFactory.class})
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
@Generated(value = "org.apache.cxf.tools.wsdlto.WSDLToJava", date = "2014-10-20T11:24:25.099+02:00", comments = "Apache CXF 2.7.12")
public interface IDealService {

質問は

注釈付きインターフェースの構築は自動化された構築プロセスの一部であるため、wsdl2java に Addressing 機能を使用するように指示するにはどうすればよいですか? クラスパスに CXF ランタイム全体があります

WSDL は公開されているため、生成を自分でテストできます (ただし、ユーザー テストの資格情報が必要なため、実際の呼び出しはできません)。

4

0 に答える 0