SOAP Message Validation ポリシーのデプロイエラーに対するトラブルシューティング

現在、Apigee Edge のドキュメントを表示しています。
Apigee X のドキュメントをご確認ください
情報

InvalidResourceType

エラー メッセージ

Edge UI または Edge 管理 API を使用した API プロキシのデプロイに失敗し、次のエラー メッセージが表示されます。

Error Deploying Revision revision_number to environment
MessageValidation soap_message_validation_policy: Invalid Resource Type resource_type. It should be xsd or wsdl. Context Revision:revision_number;APIProxy:apiproxy_name;Organization:organization;Environment:environment.

エラー メッセージの例

Error Deploying Revision 1 to test
MessageValidation SOAP-Message-Validation-1: Invalid Resource Type py.
It should be xsd or wsdl. Context Revision:1;APIProxy:soapmessagevalidation;
Organization:gsc-hipaa;Environment:test.

エラーのスクリーンショットの例

原因

このエラーは、SOAPMessageValidation ポリシーの <ResourceURL> 要素が、ポリシーでサポートされていないリソースタイプに設定されている場合に発生します。サポートされているリソースタイプは xsdwsdl です。

診断

  1. ポリシーの <ResourceURL> 要素で使用されている SOAPMessageValidation ポリシー名と無効なリソースタイプを特定します。どちらの項目もエラー メッセージで確認できます。たとえば、次のエラーでは、SOAPMessageValidation ポリシー名は SOAP-Message-Validation-1 で、リソースタイプは py です。

    Error Deploying Revision 1 to test
    MessageValidation SOAP-Message-Validation-1: Invalid Resource Type py. It should
    be xsd or wsdl. Context Revision:1;APIProxy:soapmessagevalidation;Organization:gsc-
    hipaa;Environment:test.
    
  2. エラーが発生した SOAPMessageValidation ポリシーの XML を調べます。<ResourceURL> 要素に指定されたリソースタイプが上記のステップ 1 で特定された無効のリソースタイプと一致する場合、これがエラーの原因です。

    たとえば、次のポリシーではリソースタイプに py が指定されており、これはエラー メッセージの内容と一致します。

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <MessageValidation async="false" continueOnError="false" enabled="true"
        name="SOAP-Message-Validation-1">
        <DisplayName>SOAP Message Validation-1</DisplayName>
        <Properties/>
        <Element namespace="http://sample.com"> sampleObject</Element>
        <SOAPMessage/>
        <Source>request</Source>
        <ResourceURL>py://Script-1.py</ResourceURL>
    </MessageValidation>
    

    <ResourceURL> で使用されるリソースタイプが xsd または wsdl ではないため、デプロイは上記のエラーで失敗します。

解像度

SOAPMessageValidation ポリシーの <ResourceURL> 要素で指定されたリソースタイプが xsd または wsdl に設定されていることと、リソース ファイルが正しい形式になっていることを確認してください。

上記の SOAPMessageValidation ポリシーの例を修正するには、リソースタイプを xsd または wsdl に変更します。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<MessageValidation async="false" continueOnError="false" enabled="true"
name="SOAP-Message-Validation-1">
    <DisplayName>SOAP Message Validation-1</DisplayName>
    <Properties/>
    <Element namespace="http://sample.com"> sampleObject</Element>
    <SOAPMessage/>
    <Source>request</Source>
<ResourceURL>wsdl://SOAP-Message-Validation-1.wsdl</ResourceURL>
</MessageValidation>

ResourceCompileFailed

エラー メッセージ

Edge UI または Edge 管理 API を使用した API プロキシのデプロイに失敗し、次のエラー メッセージが表示されます。

Error Deploying Revision revision_number to environment
MessageValidation soap_message_validation_policy: Failed to compile resource resource. Context Revision:revision_number;APIProxy:apiproxy_name;Organization:organization;Environment:environment.

エラー メッセージの例

Error Deploying Revision 1 to test
MessageValidation SOAP-Message-Validation-1: Failed to compile resource SOAP-Message-Validation-1.wsdl. Context Revision:1;APIProxy:soapmessagevalidation;Organization:gsc-hipaa;Environment:test.

エラーのスクリーンショットの例

原因

このエラーは、SOAPMessageValidation ポリシーの <ResourceURL> 要素で参照されているリソース スクリプトに、デプロイ中にコンパイルを妨げるエラーが含まれている場合に発生します。

診断

  1. ポリシーで使用されている SOAPMessageValidation ポリシー名とリソース スクリプトを特定します。どちらの項目もエラー メッセージで確認できます。たとえば、次のエラーでは、SOAPMessageValidation ポリシー名は SOAP-Message-Validation-1 で、リソース スクリプトは SOAP-Message-Validation-1.wsdl です。

    Error Deploying Revision 1 to test
    MessageValidation SOAP-Message-Validation-1: Failed to compile resource
    SOAP-Message-Validation-1.wsdl. Context
    Revision:1;APIProxy:soapmessagevalidation;Organization:gsc-hipaa;
    Environment:test.
    
  2. エラーが発生した SOAPMessageValidation ポリシー XML を調べて、<ResourceURL> 要素に指定されたリソース スクリプトが、エラー メッセージの内容と一致することを確認します。

    たとえば、次のポリシーでは <ResourceURL> 要素が SOAP-Message-Validation-1.wsdl として指定されており、これはエラー メッセージの内容と一致します。

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <MessageValidation async="false" continueOnError="false" enabled="true"
    name="SOAP-Message-Validation-1">
        <DisplayName>SOAP Message Validation-1</DisplayName>
        <Properties/>
        <Element namespace="http://sample.com"> sampleObject</Element>
        <SOAPMessage/>
        <Source>request</Source>
        <ResourceURL>wsdl://SOAP-Message-Validation-1.wsdl</ResourceURL>
    </MessageValidation>
    
  3. ステップ 1 で特定したリソース スクリプト ファイルを表示して、コンパイル エラーを引き起こす可能性のある問題がないか確認します。

    リソース スクリプト ファイルの例:

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsd/">
        <wsdl:types>
            <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
                <xs:element name="request" type="xs:string"/>
            </xs:schema>
        </wsdl:types>
    </wsdl:definitions>
    

    xmlns:wsdl が無効な URL を指しているため、上記のエラーでデプロイが失敗します。

解像度

SOAPMessageValidation ポリシーの <ResourceURL> 要素で指定されたリソース スクリプトに、コンパイルの妨げになる問題がないようにしてください。

上記の SOAP-Message-Validation-1.wsdl スクリプトを修正するには、有効な URL を指すように xmlns:wsdl を変更します。

<?xml version="1.0" encoding="ISO-8859-1"?>
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
    <wsdl:types>
        <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
            <xs:element name="request" type="xs:string"/>
        </xs:schema>
    </wsdl:types>
</wsdl:definitions>

RootElementNameUnspecified

エラー メッセージ

Edge UI または Edge Management API を使用して API プロキシを保存すると失敗し、次のエラー メッセージが表示されます。

Error Saving Revision revision_number
MessageValidation soap_message_validation_policy:
RootElement name is not specified.

エラー メッセージの例

Error Saving Revision 2
MessageValidation SOAP-Message-Validation-1: RootElement name is not specified.

エラーのスクリーンショットの例

原因

このエラーは、SOAPMessageValidation ポリシーの <Element> 要素に、ルート要素の名前がない場合に発生します。

診断

  1. エラーが発生した SOAPMessageValidation ポリシー名を特定します。たとえば、次のエラーでは、SOAPMessageValidation ポリシー名は SOAP-Message-Validation-1 です。

    Error Saving Revision 2
    MessageValidation SOAP-Message-Validation-1: RootElement name is not specified.
    
  2. エラーが発生した SOAPMessageValidation ポリシーの XML を調べます。検証に使用するルート要素名が <Element> 要素内で指定されていない場合、それがエラーの原因です。

    たとえば、次のポリシーではルート要素名が指定されていません。

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <MessageValidation async="false" continueOnError="false" enabled="true"
    name="SOAP-Message-Validation-1">
        <DisplayName>SOAP Message Validation-1</DisplayName>
        <Properties/>
        <Element namespace="http://schemas.xmlsoap.org/soap/prices"/>
        <SOAPMessage/>
        <Source>request</Source>
        <ResourceURL>xsd://Script-1.xsd</ResourceURL>
    </MessageValidation>
    

    ルート要素名が指定されていないため、デプロイは上記のエラーにより失敗します。

解像度

SOAPMessageValidation ポリシーの <Element> 要素に、正しいルート要素が含まれていることを確認します。

上記の SOAPMessageValidation ポリシーを修正するには、次のように <Element> を変更して、有効なルート要素を追加します。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<MessageValidation async="false" continueOnError="false" enabled="true"
name="SOAP-Message-Validation-1">
    <DisplayName>SOAP Message Validation-1</DisplayName>
    <Properties/>
    <Element namespace="http://schemas.xmlsoap.org/soap/prices">GetPriceResponse</Element>
    <SOAPMessage/>
    <Source>request</Source>
    <ResourceURL>xsd://Script-1.xsd</ResourceURL>
</MessageValidation>

InvalidRootElementName

エラー メッセージ

Edge UI または Edge Management API を使用して API プロキシを保存すると失敗し、次のエラー メッセージが表示されます。

Error Saving Revision revision_number
MessageValidation soap_message_validation_policy: RootElement name root_element_name is invalid.

エラー メッセージの例

Error Saving Revision 2
MessageValidation SOAP-Message-Validation-1: RootElement name 1GetPriceResponse
is invalid.

エラーのスクリーンショットの例

原因

このエラーは、SOAPMessageValidation ポリシーの <Element> 要素に、要素の有効な命名方法の XML ルールに準拠していないルート要素名が含まれている場合に発生します。

診断

  1. エラーが発生した SOAPMessageValidation ポリシー名を特定します。たとえば、次のエラーでは、SOAPMessageValidation ポリシー名は SOAP-Message-Validation-1 です。

    Error Saving Revision 2
    MessageValidation SOAP-Message-Validation-1: RootElement name 1GetPriceResponse
    is invalid.
    
  2. エラーが発生した SOAPMessageValidation ポリシーの XML を調べます。<Element> 要素で指定されたルート要素名が有効な XML 要素名の条件と一致しない場合は、それがエラーの原因です。

    たとえば、次のポリシーには数字で始まるルート要素名があります。数字で始まるルート要素名は無効です。スペースを含む要素名も無効です。

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <MessageValidation async="false" continueOnError="false" enabled="true"
    name="SOAP-Message-Validation-1">
        <DisplayName>SOAP Message Validation-1</DisplayName>
        <Properties/>
         <Element namespace="http://schemas.xmlsoap.org/soap/prices">1GetPriceResponse</Element>
        <SOAPMessage/>
        <Source>request</Source>
        <ResourceURL>xsd://Script-1.xsd</ResourceURL>
    </MessageValidation>
    

解像度

SOAPMessageValidation ポリシーの <Element> 要素に、有効なルート要素名が含まれていることを確認します。

上記の SOAPMessageValidation ポリシーを修正するには、次のように、有効なルート要素名が含まれるように <Element> 要素を変更します。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<MessageValidation async="false" continueOnError="false" enabled="true" name="SOAP-Message-Validation-1">
    <DisplayName>SOAP Message Validation-1</DisplayName>
    <Properties/>
    <Element namespace="http://schemas.xmlsoap.org/soap/prices">GetPriceResponse</Element>
    <SOAPMessage/>
    <Source>request</Source>
    <ResourceURL>xsd://Script-1.xsd</ResourceURL>
</MessageValidation>

NoElements

エラー メッセージ

Edge UI または Edge Management API を使用した API プロキシのデプロイに失敗すると、次のエラー メッセージが表示されます。

Error Deploying Revision revision_number
Resource "resource_url" has no element definitions.

エラー メッセージの例

Error Deploying Revision 2 to test
Resource "xsd://Script-1.xsd" has no element definitions.

エラーのスクリーンショットの例

原因

このエラーは、SOAPMessageValidation ポリシーの <Resource> 要素で指定されたリソース ファイルに、検証に使用できる要素が含まれていない場合に発生します。

診断

  1. エラー メッセージから要素定義がないリソース ファイルを特定します。たとえば、次のエラーでは、使用されているリソース ファイルは xsd://Script-1.xsd です。

    Error Deploying Revision 2 to test
    Resource "xsd://Script-1.xsd" has no element definitions.
    
  2. ステップ 1 で特定したリソース ファイルを調べます。要素が定義されていない場合、それがエラーの原因です。

    たとえば、次のリソース ファイル Script-1.xsd には要素が含まれていません。

    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    </xsd:schema>
    

    リソース ファイルに要素が含まれていないため、デプロイは上記のエラーにより失敗します。

解決策

SOAPMessageValidation ポリシーで使用されるリソース ファイルに、関連する要素の定義が含まれていることを確認します。

上記のサンプルのリソース ファイルを修正するには、xsd ファイルを変更して次の内容を追加します。

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="shipOrder" type="order"/>
<xsd:complexType name="order">
<xsd:sequence>
<xsd:element name="shipTo" type="shipAddress"/>
<xsd:element name="items" type="cdItems"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="shipAddress">
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="street" type="xsd:string"/>
<xsd:element name="address" type="xsd:string"/>
<xsd:element name="country" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="cdItems">
<xsd:sequence>
<xsd:element name="item" type="cdItem" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="cdItem">
<xsd:sequence>
<xsd:element name="title" type="xsd:string"/>
<xsd:element name="quantity" type="xsd:integer"/>
<xsd:element name="price" type="xsd:decimal"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>