Solução de problemas de erro na implantação da política de validação de mensagens SOAP

Esta é a documentação da Apigee e da Apigee híbrida.
Confira a documentação da Apigee Edge.

InvalidResourceType

Mensagem de erro

A implantação do proxy de API por meio da IU da Apigee ou da API falha com esta mensagem de erro:

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.

Exemplo de mensagem de erro

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.

Captura de tela com erro de exemplo

Mensagem de erro de recurso inválido.

Causa

Esse erro ocorre se o elemento <ResourceURL> na política SOAPMessageValidation estiver definido como um tipo de recurso não compatível com a política. Os tipos de recurso compatíveis são xsd e wsdl.

Diagnóstico

  1. Identifique o nome da política SOAPMessageValidation e o tipo de recurso inválido usado no elemento <ResourceURL> da política. É possível encontrar esses dois itens na mensagem de erro. Por exemplo, no erro a seguir, o nome da política SOAPMessageValidation é SOAP-Message-Validation-1 e o tipo de recurso é 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. Examine o XML da política SOAPMessageValidation com falha. Se o tipo de recurso especificado para o elemento <ResourceURL> corresponde ao tipo de recurso inválido identificado na Etapa 1 acima, essa é a causa do erro.

    Por exemplo, a seguinte política especifica o tipo de recurso como py, que corresponde ao que está na mensagem de erro:

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

    Como o tipo de recurso usado em <ResourceURL> não é xsd ou wsdl, a implantação falhará com o erro mostrado acima.

Resolução

Verifique se o tipo de recurso especificado no elemento <ResourceURL> da política SOAPMessageValidation está definido como xsd ou wsdl e se o arquivo de recurso usa a formatação correta.

Para corrigir o exemplo de política SOAPMessageValidation mostrado acima, modifique o tipo de recurso para xsd ou 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

Mensagem de erro

A implantação do proxy de API por meio da IU da Apigee ou da API falha com esta mensagem de erro:

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.

Exemplo de mensagem de erro

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.

Captura de tela com erro de exemplo

Falha ao compilar a mensagem de erro de recurso.

Causa

Esse erro ocorrerá se o script de recurso referenciado no elemento <ResourceURL> da política SOAPMessageValidation contiver um erro que o impedirá durante a compilação.

Diagnóstico

  1. Identifique o nome da política SOAPMessageValidation e o script de recurso usado nela. É possível encontrar esses dois itens na mensagem de erro. Por exemplo, no erro a seguir, o nome da política SOAPMessageValidation é SOAP-Message-Validation-1 e o script de recursos é 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. Analise o XML da política SOAPMessageValidation com falha e verifique se o script de recurso especificado para o elemento <ResourceURL> corresponde ao que está na mensagem de erro.

    Por exemplo, a política a seguir especifica o elemento <ResourceURL> como SOAP-Message-Validation-1.wsdl, que corresponde ao que está na mensagem de erro:

    <?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. Visualize o arquivo de script de recurso identificado na Etapa 1 e veja se há algum problema em potencial que pode resultar em erros de compilação.

    Veja um exemplo de arquivo de script de recurso:

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

    Como xmlns:wsdl aponta para um URL inválido, a implantação falhará com o erro mostrado acima.

Resolução

Verifique se o script de recurso especificado no elemento <ResourceURL> da política SOAPMessageValidation não tem problemas que impeçam a compilação.

Para corrigir o script SOAP-Message-Validation-1.wsdl mostrado acima, modifique xmlns:wsdl para apontar para um URL válido:

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

Mensagem de erro

Salvar o proxy da API por meio da IU ou da API da Apigee falha com esta mensagem de erro:

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

Exemplo de mensagem de erro

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

Captura de tela com erro de exemplo

Mensagem de erro &quot;RootElement&quot; não especificada.

Causa

Esse erro ocorrerá se o elemento <Element> na política SOAPMessageValidation não contiver o nome do elemento raiz.

Diagnóstico

  1. Identifique o nome da política SOAPMessageValidation em que o erro ocorreu. Por exemplo, no erro a seguir, o nome da política SOAPMessageValidation é SOAP-Message-Validation-1:

    Error Saving Revision 2
    MessageValidation SOAP-Message-Validation-1: RootElement name is not specified.
    
  2. Examine o XML da política SOAPMessageValidation com falha. Se o nome do elemento raiz usado para validação não for especificado no elemento <Element>, essa é a causa do erro.

    Por exemplo, esta política não especifica o nome do elemento raiz:

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

    Como o nome do elemento raiz não é especificado, a implantação falhará com o erro mostrado acima.

Resolução

Verifique se o elemento <Element> da política SOAPMessageValidation contém o elemento raiz correto.

Para corrigir a política SOAPMessageValidation exibida acima, modifique o <Element> e adicione um elemento raiz válido conforme abaixo:

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

Mensagem de erro

Salvar o proxy da API por meio da IU ou da API da Apigee falha com esta mensagem de erro:

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

Exemplo de mensagem de erro

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

Captura de tela com erro de exemplo

O nome do RootElement 1GetPriceResponse é uma mensagem de erro inválida.

Causa

Esse erro ocorrerá se o elemento <Element> na política SOAPMessageValidation contiver um nome de elemento raiz que não siga regras de nome para nomes de elementos válidos.

Diagnóstico

  1. Identifique o nome da política SOAPMessageValidation em que o erro ocorreu. Por exemplo, no erro a seguir, o nome da política SOAPMessageValidation é SOAP-Message-Validation-1:

    Error Saving Revision 2
    MessageValidation SOAP-Message-Validation-1: RootElement name 1GetPriceResponse
    is invalid.
    
  2. Examine o XML da política SOAPMessageValidation com falha. Se o nome do elemento raiz especificado no elemento <Element> não corresponder aos critérios de um nome de elemento XML válido, essa é a causa do erro.

    Por exemplo, a política a seguir tem um nome de elemento raiz que começa com um número, o que é inválido. Um nome de elemento contendo espaços também seria inválido.

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

Resolução

Verifique se o elemento <Element> da política SOAPMessageValidation contém um nome de elemento raiz válido.

Para corrigir a política SOAPMessageValidation acima, modifique o elemento <Element> para conter um nome de elemento raiz válido, conforme mostrado abaixo:

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

Mensagem de erro

A implantação do proxy da API por meio da IU da Apigee ou da API falha com esta mensagem de erro:

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

Exemplo de mensagem de erro

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

Captura de tela com erro de exemplo

O recurso não tem uma mensagem de erro de definições de elemento.

Causa

Esse erro ocorre se o arquivo de recurso especificado no elemento <Resource> da política SOAPMessageValidation não contiver elementos que possam ser usados para validação.

Diagnóstico

  1. Identifique o arquivo do recurso sem definições de elemento na mensagem de erro. Por exemplo, no erro a seguir, o arquivo de recurso usado no é xsd://Script-1.xsd:

    Error Deploying Revision 2 to test
    Resource "xsd://Script-1.xsd" has no element definitions.
    
  2. Examine o arquivo de recurso identificado na Etapa 1. Se não houver elementos definidos, essa é a causa do erro.

    Por exemplo, o arquivo de recurso Script-1.xsd a seguir não contém elementos:

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

    Como o arquivo de recursos não tem elementos, a implantação falhará com o erro mostrado acima.

Resolução

Verifique se o arquivo de recurso usado na política SOAPMessageValidation contém as definições de elemento relevantes.

Para corrigir o arquivo de recurso de exemplo mostrado acima, modifique o arquivo xsd para adicionar o seguinte conteúdo:

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