SOAP 메시지 유효성 검사 정책 배포 오류 문제해결

현재 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. 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. 실패한 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 스크립트를 수정하려면 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

오류 메시지

Edge UI 또는 Edge 관리 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 관리 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 관리 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>