XML にマーシャリングする必要があるクラスがあります。
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class ClassToBeMarshalled {
public Interface object;
}
インターフェイスは多くの具体的なクラスによって実装されており、それらのほとんどはソース コードにアクセスできないベンダー固有のものです。
だから私の問題は:
そのクラスをマーシャリングしようとすると、JAX-B は Interface の現在の具体的な実装がコンテキストで認識されていないことを訴えます。つまり、現在の実装を提供する JAXBContext.newInstance を呼び出すことによって、具体的なクラスがコンテキストにロードされませんでした。
その問題を解決する最も一般的な方法は次のとおりです。
1) XMLSeeAlso を使用する - 多くの具体的なクラスがあるため、実行可能なオプションではありません
2)各クラスに @XmlRootElement で注釈を付けます-すべてのクラスにアクセスできないため、実行可能なオプションではありません
必要に応じて JAX-B に具象クラスをそのコンテキストにロードさせる方法を知っている人はいますか?
ありがとう。
PS: JAX-B RI を使用しています