32.4. ランタイムマーシャラーへのクラスの追加
概要
Apache CXF ランタイムが XML データを読み書きするとき、XML スキーマタイプをそれらの代表的な Java タイプに関連付けるマップを使用します。デフォルトでは、マップには WSDL コントラクトの schema
要素のターゲット namespace で定義されたすべてのタイプが含まれます。また、WSDL コントラクトにインポートされたスキーマの名前空間から生成されたタイプも含まれています。
アプリケーションの 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 {
...
}