1

アプリケーションに Web サービスを実装しました。Soap UI を使用して SOA 経由で Web サービス経由でサーバーにオブジェクトを送信したい場合、次のような結果が得られます。

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:impl="http://impl.arg.lou.com/">
   <soapenv:Header/>
   <soapenv:Body>
      <impl:addStudent>
         <!--Optional:-->
         <student>
            <!--Optional:-->
            <name>?</name>
         </student>
      </impl:addStudent>
   </soapenv:Body>
</soapenv:Envelope>

名前フィールドをオプションにしたくないので、必須フィールドにする必要があります。どうすればいいですか?

私はApache cxfを使用しています。

要件レベルのリンク: http://www.ietf.org/rfc/rfc2119.txt

4

1 に答える 1

2

Web サービス定義には、メッセージの XML スキーマを定義するtypeセクションがあります。その定義では、「必須フィールド」などのいくつかの制約を設定できます。

例:

<wsdl:definitions name="myService" ...>
  <wsdl:types>
    <xs:schema version="1.0" targetNamespace="myNameSpace" xmlns:tns="myNameSpace">
      <xs:complexType name="studentType">
        <xs:attribute name="name" type="xs:string" use="required" />
      </xs:complexType>
      <xs:element name="student" nillable="false" type="tns:studentType"/>
    </xs:schema>
  </wsdl:types>
  ...
 </wsdl:definitions>

現在、次のようにApache CXF構成でスキーマ検証を有効にしないと、サーバー側で検証されません。

<jaxws:endpoint id="myService" ...>
  <jaxws:properties>
    <entry key="schema-validation-enabled" value="true" />
    ...
  </jaxws:properties>
  ...
</jaxws:endpoint>

PS: SOAP UI は、対象の Web サービスの XML スキーマを使用して、デフォルトの要求を生成します。use="required"XML スキーマにまたはがない場合、要素にコメントnillable="false"が追加されます。<!-- optional -->

于 2012-06-03T20:46:01.320 に答える