Menu Close

32.4. ランタイムマーシャラーへのクラスの追加

概要

Apache CXF ランタイムが XML データを読み取りおよび書き込みする場合、XML スキーマ型と対応する Java 型に関連付けるマッピングが使用されます。デフォルトでは、マッピングには WSDL コントラクトの schema 要素のターゲット namespace に定義されているすべての型が含まれます。また、WSDL コントラクトにインポートされたスキーマの namespace から生成されたすべての型も含まれます。

アプリケーションの schema 要素によって使用されるスキーマ namespace 以外の名前空間から型を追加するには、@XmlSeeAlso アノテーションを使用します。アプリケーションが、アプリケーションの WSDL ドキュメントのスコープ外で生成された型と連携する必要がある場合、@XmlSeeAlso アノテーションを編集して JAXB マッピングに追加できます。

@XmlSeeAlso アノテーションの使用

@XmlSeeAlso アノテーションを、サービスの SEI に追加できます。JAXB コンテキストに追加するクラスのコンマ区切りリストが含まれます。例32.7「JAXB コンテキストにクラスを追加する構文」に、@XmlSeeAlso アノテーションを使用するための構文を示します。

例32.7 JAXB コンテキストにクラスを追加する構文

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

JAXB で生成されたクラスにアクセスできる場合には、必要な型に対応するために生成された ObjectFactory クラスを使用する方が効率的です。ObjectFactory クラスを含めると、オブジェクトファクトリーで認識されるすべてのクラスが含められます。

例32.8「JAXB コンテキストへのクラスの追加」に、@XmlSeeAlso のアノテーションが付けられた SEI を示します。

例32.8 JAXB コンテキストへのクラスの追加

...
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 {
        ...
    }