32장. 기본 데이터 바인딩 개념
초록
Apache CXF가 유형 매핑을 처리하는 방법에 적용되는 몇 가지 일반 항목이 있습니다.
32.1. 스키마 정의 포함 및 가져오기
32.1.1. 개요
Apache CXF는 include
및 import 스키마 태그를 사용하여 스키마 정의의 포함 및 가져오기
를 지원합니다. 이러한 태그를 사용하면 외부 파일 또는 리소스의 정의를 스키마 요소의 범위에 삽입할 수 있습니다. 포함과 가져오기의 주요 차이점은 다음과 같습니다.
- 포함에는 포함된 스키마 요소와 동일한 대상 네임스페이스에 속하는 정의가 포함됩니다.
- 가져오기는 스키마 요소에서 다른 대상 네임스페이스에 속하는 정의를 가져옵니다.Importing comes in definitions that belong to a different target namespace from the enclosing schema element.
32.1.2. XSD:include 구문
include 지시문에는 다음 구문이 있습니다.
<include schemaLocation="anyURI" />
anyURI 에서 제공하는 참조된 스키마는 포함 스키마와 동일한 대상 네임스페이스에 속하거나 모든 대상 네임스페이스에 속하지 않아야 합니다. 참조된 스키마가 대상 네임스페이스에 속하지 않으면 포함된 스키마의 네임스페이스로 자동으로 채택됩니다.
예 32.1. “다른 스키마를 포함하는 스키마의 예” 다른 XML 스키마 문서를 포함하는 XML 스키마 문서의 예를 보여줍니다.
예 32.1. 다른 스키마를 포함하는 스키마의 예
<definitions targetNamespace="http://schemas.redhat.com/tests/schema_parser" xmlns:tns="http://schemas.redhat.com/tests/schema_parser" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/"> <types> <schema targetNamespace="http://schemas.redhat.com/tests/schema_parser" xmlns="http://www.w3.org/2001/XMLSchema"> <include schemaLocation="included.xsd"/> <complexType name="IncludingSequence"> <sequence> <element name="includedSeq" type="tns:IncludedSequence"/> </sequence> </complexType> </schema> </types> ... </definitions>
예 32.2. “포함 스키마의 예” 포함된 스키마 파일의 내용을 보여줍니다.
예 32.2. 포함 스키마의 예
<schema targetNamespace="http://schemas.redhat.com/tests/schema_parser" xmlns="http://www.w3.org/2001/XMLSchema"> <!-- Included type definitions --> <complexType name="IncludedSequence"> <sequence> <element name="varInt" type="int"/> <element name="varString" type="string"/> </sequence> </complexType> </schema>
32.1.3. XSD:import 구문
import 지시문에는 다음 구문이 있습니다.
<import namespace="namespaceAnyURI" schemaLocation="schemaAnyURI" />
가져온 정의는 namespaceAnyURI 대상 네임스페이스에 속해야 합니다. namespaceAnyURI 가 비어 있거나 지정되지 않은 상태로 남아 있는 경우 가져온 스키마 정의는 정규화되지 않습니다.
예 32.3. “다른 스키마를 가져오는 스키마의 예” 다른 XML 스키마를 가져오는 XML 스키마의 예를 보여줍니다.
예 32.3. 다른 스키마를 가져오는 스키마의 예
<definitions targetNamespace="http://schemas.redhat.com/tests/schema_parser" xmlns:tns="http://schemas.redhat.com/tests/schema_parser" xmlns:imp="http://schemas.redhat.com/tests/imported_types" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/"> <types> <schema targetNamespace="http://schemas.redhat.com/tests/schema_parser" xmlns="http://www.w3.org/2001/XMLSchema"> <import namespace="http://schemas.redhat.com/tests/imported_types" schemaLocation="included.xsd"/> <complexType name="IncludingSequence"> <sequence> <element name="includedSeq" type="imp:IncludedSequence"/> </sequence> </complexType> </schema> </types> ... </definitions>
예 32.4. “가져온 스키마의 예” 가져온 스키마 파일의 내용을 표시합니다.
예 32.4. 가져온 스키마의 예
<schema targetNamespace="http://schemas.redhat.com/tests/imported_types" xmlns="http://www.w3.org/2001/XMLSchema"> <!-- Included type definitions --> <complexType name="IncludedSequence"> <sequence> <element name="varInt" type="int"/> <element name="varString" type="string"/> </sequence> </complexType> </schema>
32.1.4. 참조되지 않은 스키마 문서 사용
서비스의 WSDL 문서에서 참조되지 않는 스키마 문서에 정의된 유형을 사용하는 것은 3단계 프로세스입니다.
-
xsd2wsdl
툴을 사용하여 스키마 문서를 WSDL 문서로 변환합니다. 생성된 WSDL 문서에서
wsdl2java
툴을 사용하여 유형에 대해 Java를 생성합니다.중요wsdl2java
툴에서 WSDL 문서에서 서비스를 정의하지 않는다는 경고가 표시됩니다. 이 경고를 무시할 수 있습니다.- 생성된 클래스를 classpath에 추가합니다.