32.4. 런타임 Marshaller에 클래스 추가

32.4.1. 개요

Apache CXF 런타임이 XML 데이터를 읽고 쓸 때 XML 스키마 유형을 대표 Java 유형과 연결하는 맵을 사용합니다. 기본적으로 맵에는 WSDL 계약 스키마 요소의 대상 네임스페이스에 정의된 모든 유형이 포함되어 있습니다. 또한 WSDL 계약으로 가져온 스키마의 네임스페이스에서 생성된 모든 형식을 포함합니다.

애플리케이션의 스키마 요소에서 사용하는 스키마 네임스페이스 이외의 네임스페이스에서 형식을 추가하면 @XmlSee also 주석을 사용하여 수행할 수 있습니다. 애플리케이션에서 애플리케이션 WSDL 문서 범위 외부에서 생성된 유형으로 작업해야 하는 경우 @XmlSee도 주석을 편집하여 JAXB 맵에 추가할 수 있습니다.

32.4.2. @XmlSee also 주석 사용

@XmlSee also 주석을 서비스의 SEI에 추가할 수 있습니다. JAXB 컨텍스트에 포함할 쉼표로 구분된 클래스 목록을 포함합니다. 예 32.7. “JAXB Context에 클래스 추가” @XmlSeeAlso 주석을 사용하는 구문을 보여줍니다.

예 32.7. JAXB Context에 클래스 추가

import javax.xml.bind.annotation.XmlSeeAlso;
     @WebService()
     @XmlSeeAlso({Class1.class, Class2.class, ..., ClassN.class})
     public class GeneratedSEI {
         ...
     }

JAXB 생성 클래스에 대한 액세스 권한이 있는 경우 필요한 유형을 지원하는 데 생성된 ObjectFactory 클래스를 사용하는 것이 더 효율적입니다. ObjectFactory 클래스를 포함 하는 것은 개체 팩토리에 알려진 모든 클래스를 포함 합니다.

32.4.3. 예제

예 32.8. “JAXB Context에 클래스 추가” 에는 @XmlSee에도 주석이 달린 SEI가 표시됩니다.

예 32.8. JAXB Context에 클래스 추가

...
import javax.xml.bind.annotation.XmlSeeAlso;
...
    @WebService()
    @XmlSeeAlso({org.apache.schemas.types.test.ObjectFactory.class, org.apache.schemas.tests.group_test.ObjectFactory.class})
    public interface Foo {
        ...
    }