34.6. 간단한 유형 대체

34.6.1. 개요

XML은 xsi:type 특성을 사용하여 호환되는 유형 간 간단한 유형 대체를 허용합니다. 그러나 간단한 유형의 기본 매핑을 Java 기본 유형으로 매핑하지만 간단한 유형 대체를 완전히 지원하지는 않습니다. 런타임에서는 기본 단순 형식 대체를 처리할 수 있지만 정보가 손실됩니다. 코드 생성기는 무손실 간단한 유형 대체를 용이하게하는 Java 클래스를 생성하도록 사용자 지정할 수 있습니다.

34.6.2. 기본 매핑 및 마샬링

Java 기본 유형은 유형 대체를 지원하지 않기 때문에 Java 프리미티브 유형으로 간단한 유형의 기본 매핑은 간단한 유형 대체를 지원하는 데 문제가 있습니다. 유형을 정의하는 스키마에서 허용하는 경우에도 int 가 예상되는 변수로 단축 을 수행하려는 경우 Java 가상 머신은 balk합니다.

Java 유형 시스템에서 적용되는 제한 사항을 충족하기 위해 Apache CXF에서는 요소의 xsi:type 속성 값이 다음 조건 중 하나를 충족할 때 간단한 유형 대체를 허용합니다.

  • 요소의 스키마 형식과 호환되는 기본 형식을 지정합니다.Specifies a primitive type that is compatible with the element's schema type.
  • 요소의 스키마 형식에서 제한으로 파생되는 형식을 지정합니다.Specifies a type that derives by restriction from the element's schema type.
  • 요소의 스키마 형식에서 확장으로 파생되는 복잡한 형식을 지정합니다.Specifies a complex type that derives by extension from the element's schema type.

런타임이 유형 대체를 수행하는 경우 요소의 xsi:type 속성에 지정된 유형에 대한 지식이 유지되지 않습니다. 형식 대체가 복합 형식에서 간단한 형식으로 된 경우 단순 유형과 직접 관련된 값만 유지됩니다.If the type substitution is from a complex type to a simple type, only the value directly related to the simple type is preserved. 확장에 의해 추가된 다른 모든 요소 및 특성은 손실됩니다.

34.6.3. 무손실 유형 대체 지원

간단한 유형의 생성을 사용자 지정하여 다음과 같은 방법으로 간단한 유형 대체의 무손실 지원을 용이하게 할 수 있습니다.

  • globalBindings 사용자 지정 요소의 mapSimpleTypeDeftrue 로 설정합니다.

    이를 통해 글로벌 범위에 정의된 모든 단순 형식에 대해 Java 값 클래스를 생성하도록 코드 생성기가 지시합니다.

    자세한 내용은 38.3절. “Simple Types을 위한 Java 클래스 생성” 에서 참조하십시오.

  • javaType 요소를 전역Bindings 사용자 지정 요소에 추가합니다.

    이렇게 하면 코드 생성기가 XML 스키마 기본 형식의 모든 인스턴스를 특정 클래스의 특정 클래스에 매핑하도록 지시합니다.This instructs the code generators to map all instances of an XML Schema primitive type to s specific class of object.

    자세한 내용은 38.2절. “XML 스키마의 Java 클래스 지정” 에서 참조하십시오.

  • 사용자 정의 하려는 특정 요소에 baseType 사용자 지정 요소를 추가 합니다.Add a baseType custom element to the specific elements you want to customize.

    baseType 사용자 지정 요소를 사용하면 속성을 나타내기 위해 생성된 Java 유형을 지정할 수 있습니다. 단순 형식 대체에 가장 적합한 호환성을 확인하려면 java.lang.Object 를 기본 유형으로 사용합니다.

    자세한 내용은 38.6절. “Element 또는 Attribute의 기본 유형 지정” 에서 참조하십시오.