メインコンテンツ

このページは前リリースの情報です。該当の英語のページはこのリリースで削除されています。

WSDL ドキュメント サポートの制限

R2026a

注意

WSDL を使用して MATLAB® から Web サービスを呼び出す機能は、今後のリリースで削除される予定です。代わりに、MATLAB RESTful 関数 (webread および webwrite) または MATLAB HTTP インターフェイスを使用してください。

サポートされていない WSDL ドキュメント

  • RPC-encoded の WSDL ドキュメント。

  • Apache® CXF プログラムが完全なコードにコンパイルできないドキュメント。

  • WSDL の型定義を含む他の WSDL ドキュメントをインポートするドキュメント。

    すべてのスキーマ定義を、インポートしたファイルから最上位の WSDL ファイルに移します。スキーマ定義は、types 要素内の schema 要素として表示されます。

    インポートしたファイルがローカルではない場合、そのファイルをローカルでコピーし、すべてのファイルの import 要素がローカル ファイルを指すように変更します。

    たとえば、次の最上位ファイルを考えます。

        <definitions> 
            <import location="http://foo/bar?wsdl" /> 
            <types> 
               ...top level type definitions... 
            </types> 
        </definitions>

    location 属性のファイル http://foo/bar?wsdl をローカル ファイルにダウンロードし、imported_file として保存します。このファイルには次のような情報が含まれています。

        <wsdl:types> 
            ...low level type definitions... 
            <xsd:schema> 
                ...schema definitions... 
            </xsd:schema> 
        </wsdl:types> 
    

    types 要素と schema 要素を検索します。テキストの接頭辞 wsdl および xsd には標準の命名規則がなく、まったく表示されない場合もあります。スキーマ定義 "内" の import 要素はダウンロードしないでください。インポートしたファイルにあるすべての schema 要素を、開始タグと終了タグを含めて、インポートしたファイルから最上位ファイルの types 要素の末端へと移します。次に、インポートしたファイルから要素を削除します。最上位ファイルにある既存の schema 要素は変更しないでください。最上位ファイルに types セクションが既に含まれている場合は、schema 要素を既存の types の内容に追加します。そうでない場合は、最上位ファイルの definitions 要素内に types セクションを作成して schema 要素を格納します。

    最上位ファイルには以下が含まれるようになります。

        <definitions> 
            <import location="imported_file" /> 
            <types> 
                ...top level type definitions... 
                <xsd:schema> 
                   ...schema definitions... 
                </xsd:schema> 
            </types> 
        </definitions>

    imported_file ファイルには以下が含まれています。

        <wsdl:types> 
            ...low level type definitions... 
        </wsdl:types> 
    

    最上位ファイルには、definitions 要素内に types 要素が厳密に 1 つだけ存在しなければならず、インポートした WSDL ファイルで定義されているすべてのスキーマがそこに含まれます。インポートした WSDL のいずれにも、schema 要素が含まれていてはなりません。

  • Windows® では、他の WSDL ドキュメントをインポートするドキュメントは、インポートされる URI に特定の句読点が含まれる場合、エラーとなる可能性があります。

  • 複数のパーツを含むメッセージをもつドキュメント。

  • 匿名の複素数型を含むスキーマをもつドキュメント。

  • 演算への入力パラメーターを単純型として定義している一部のドキュメント。たとえば GetMyOp などの演算を呼び出すと、MATLAB は以下のいずれかのエラーを表示します。

    Error using xxx/GetMyOp.  Too many input arguments.
    

    または、

    Error using matlab.internal.callJava
    No GetMyOp method with appropriate signature exists in Java class $Proxy57
    
  • WSDL ドキュメントが複数の名前空間でスキーマ型を定義している場合、異なる名前空間の型に同じ名前が付けられているとエラーが発生することがあります。通常、複数の名前空間は、import ステートメントを使用するときに発生します。MATLAB は、次のようなメッセージを表示します。

    Error using matlab.wsdl.createWSDLClient (line 239) 
    Error processing WSDL: 
    file:/l:/02090080/incoming/service_w0_x0.xsd [149,4]: Two declarations cause a collision in the ObjectFactory class.

    この問題を回避するには、インポートしたファイルをコピーして編集し、競合する型の名前を変更します。

  • XML スキーマの要素 all が認識されない。

    all を使用して complexType が定義されている場合、その型の生成された MATLAB クラスにはどの子要素も表示されません。この例では、Id 要素と Name 要素は Record クラスのプロパティとして表示されません。

    <xsd:complexType name="Record">
        <xsd:all>
            <xsd:element name="Id" type="xsd:string"/>
            <xsd:element name="Name" type="xsd:string"/>
        </xsd:all>
    </xsd:complexType>

    これを回避するには、WSDL ファイルをローカルでコピーして、xsd:all を xsd:sequence で置き換えます。

    <xsd:complexType name="Record">
        <xsd:sequence>
            <xsd:element name="Id" type="xsd:string"/>
            <xsd:element name="Name" type="xsd:string"/>
        </xsd:sequence>
    </xsd:complexType>

ラッパー スタイル準拠のドキュメント

Java API for XML Web Services (JAX-WS) 2.0 で説明されているように、WSDL で定義される操作は、ラッパー スタイル規則に準拠していなければなりません。以下のようなエラー メッセージによって、この問題が指摘されます。

Error using matlab.internal.callJava
No authenticate method with appropriate signature exists in Java class com.sun.proxy.$Proxy55

Error in Service/Authenticate (line 107)
            matlab.internal.callJava('authenticate',obj.PortObj,fromMATLAB({'Authenticate','user'},
            user,'string',false,false),...

この問題を回避するには、ラッパー スタイル規則に準拠するように WSDL を編集するか、または生成された MATLAB コードを編集してインスタンス化し、パラメーターが格納されている Java® クラス オブジェクトに渡します。

サポートされない SOAP ヘッダー フィールド

簡易オブジェクト アクセス プロトコル (SOAP) ヘッダー要素を必要とするメッセージを送信することはできません。SOAP 本文の要素のみがサポートされます。

参考

| |

トピック