0

私はApache CXFを使用してWebサービスを開発しており、スキーマ検証による最初のアプローチを契約しています。問題は、検証が機能していないことです。エラーはありませんので、活性化されていないようです。ただし、検証は構成されています

そこで、ここで見つけることができる公式の Apache CXF の例を調べました。

wsdl_firstの例を見て、スキーマの検証と WSDL のいくつかの制限を追加して変更しました。

<!-- HTTP Endpoint -->
<jaxws:endpoint xmlns:customer="http://customerservice.example.com/"
    id="CustomerServiceHTTP" address="http://localhost:9090/CustomerServicePort"
    serviceName="customer:CustomerServiceService" endpointName="customer:CustomerServiceEndpoint"
    implementor="com.example.customerservice.server.CustomerServiceImpl">

    <jaxws:features>
        <bean class="org.apache.cxf.feature.LoggingFeature" />
    </jaxws:features>
            <!-- schema validation-->
    <jaxws:properties>
        <entry key="schema-validation-enabled" value="true" />
    </jaxws:properties>
</jaxws:endpoint>

驚いたことに、それも機能しません。

わかりましたので、wsdl_first_xmlbeansの例を見てみました。ここでは、README.txt ファイルによると、CXF 構成を使用してスキーマ検証を有効にする方法も示されています

この例では、スキーマ検証が機能します。両方の例の違いは、2 番目の例がJAX-WS API を使用し、XMLBeansアプローチを使用していることです。それは何か関係がありますか?最初の例でスキーマ検証が機能しないのはなぜですか? おそらく、私は何かが欠けています。

4

1 に答える 1

0

サービス側で検証するには、おそらく jaxws:endpoint に wsdlLocation 属性を設定して、WSDL (スキーマを含む) をロードする必要があります。現在、この例の検証はクライアント側のみです。サービスを実行すると、ログに次のように表示されます。

INFO: Creating Service {http://server.customerservice.example.com/}CustomerServiceImplService from class com.example.customerservice.CustomerService

これは、WSDL をまったく使用していないことを示しています。

于 2013-06-04T15:17:14.070 に答える