Устранение неполадок при развертывании правила проверки сообщений SOAP

Вы просматриваете документацию по Apigee Edge.
Перейдите к документации по Apigee X.
Информация

InvalidResourceType

Сообщение об ошибке

Развертывание прокси-сервера API через интерфейс Edge или API управления Edge завершается неудачно с сообщением об ошибке:

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.

Пример скриншота с ошибкой

Причина

Эта ошибка возникает, если для элемента <ResourceURL> в правиле SOAPMessageValidation задан тип ресурса, не поддерживаемый правилом. Поддерживаемые типы ресурсов: xsd и wsdl.

диагностика;

  1. Определите название политики SOAPMessageValidation и недопустимый тип ресурса, используемый в элементе <ResourceURL> политики. Оба этих элемента можно найти в сообщении об ошибке. Например, в приведенной ниже ошибке название правила 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. Проверьте XML-код правил SOAPMessageValidation, которые не удалось применить. Если тип ресурса, указанный для элемента <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, развертывание завершится неудачно с ошибкой, показанной выше.

Разрешение

Убедитесь, что тип ресурса, указанный в элементе <ResourceURL>правила SOAPMessageValidation, имеет значение 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

Сообщение об ошибке

Развертывание прокси-сервера API через интерфейс Edge или API управления Edge завершается неудачно с сообщением об ошибке:

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.

Пример скриншота с ошибкой

Причина

Эта ошибка возникает, если в скрипте ресурса, на который ссылается элемент <ResourceURL> правила SOAPMessageValidation, есть ошибка, из-за которой его не удается скомпилировать во время развертывания.

диагностика;

  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. Проверьте XML-код неудачной политики SOAPMessageValidation и убедитесь, что скрипт ресурса, указанный для элемента <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, развертывание завершится с ошибкой, показанной выше.

Разрешение

Убедитесь, что в скрипте ресурса, указанном в элементе <ResourceURL> правила SOAPMessageValidation, нет ошибок, препятствующих его компиляции.

Чтобы исправить скрипт SOAP-Message-Validation-1.wsdl, показанный выше, измените xmlns:wsdl, указав действительный URL:

<?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

Сообщение об ошибке

При сохранении прокси-сервера API через интерфейс Edge или API управления Edge появляется следующее сообщение об ошибке:

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.

Пример скриншота с ошибкой

Причина

Эта ошибка возникает, если элемент <Element> в правиле SOAPMessageValidation не содержит название корневого элемента.

диагностика;

  1. Определите название правила SOAPMessageValidation, в котором произошла ошибка. Например, в следующей ошибке название правила SOAPMessageValidation – SOAP-Message-Validation-1:

    Error Saving Revision 2
    MessageValidation SOAP-Message-Validation-1: RootElement name is not specified.
    
  2. Проверьте XML-код правил 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"/>
        <SOAPMessage/>
        <Source>request</Source>
        <ResourceURL>xsd://Script-1.xsd</ResourceURL>
    </MessageValidation>
    

    Поскольку имя корневого элемента не указано, развертывание завершится с ошибкой, показанной выше.

Разрешение

Убедитесь, что элемент <Element> правила SOAPMessageValidation содержит правильный корневой элемент.

Чтобы исправить правило 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

Сообщение об ошибке

При сохранении прокси-сервера API через интерфейс Edge или API управления Edge появляется следующее сообщение об ошибке:

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.

Пример скриншота с ошибкой

Причина

Эта ошибка возникает, если элемент <Element> в правиле SOAPMessageValidation содержит название корневого элемента, которое не соответствует правилам XML для допустимых названий элементов.

диагностика;

  1. Определите название правила SOAPMessageValidation, в котором произошла ошибка. Например, в приведенном ниже сообщении об ошибке название правила SOAPMessageValidation – SOAP-Message-Validation-1:

    Error Saving Revision 2
    MessageValidation SOAP-Message-Validation-1: RootElement name 1GetPriceResponse
    is invalid.
    
  2. Проверьте XML-код правил SOAPMessageValidation, которые не удалось применить. Если название корневого элемента, указанное в элементе <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>
    

Разрешение

Убедитесь, что элемент <Element> правила SOAPMessageValidation содержит допустимое название корневого элемента.

Чтобы исправить показанное выше правило 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

Сообщение об ошибке

Развертывание прокси-сервера API через интерфейс Edge или API управления Edge завершается неудачно с сообщением об ошибке:

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.

Пример скриншота с ошибкой

Причина

Эта ошибка возникает, если в файле ресурса, указанном в элементе <Resource> правила SOAPMessageValidation, нет элементов, которые можно использовать для проверки.

диагностика;

  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>