17.8. インターフェース、 抽象クラス、 JAXB


オブジェクトモデルによっては抽象クラスやインターフェースを多く使用するものがあります。 JAXB はルートエレメントのインターフェースでは動作しません。 JAXBContext の作成に必要な情報が欠けているため、 RESTEasy はインターフェースや raw 抽象クラスであるパラメータをアンマーシャリングすることはできません。 次の例を見てください。
 public interface IFoo {}

 @XmlRootElement
 public class RealFoo implements IFoo {}

 @Path("/jaxb")
 public class MyResource {

@PUT
@Consumes("application/xml")
public void put(IFoo foo) {...}
 }
Copy to Clipboard Toggle word wrap
この例では、 RESTEasy はエラーを表示します ("Cannot find MessageBodyReader for..." など)。 これは、 IFoo の実装が JAXB クラスであることを RESTEasy が認識しないため、 IFooJAXBContext を作成できないからです。 回避策として、 インターフェースに @XmlSeeAlso アノテーションを付けて問題を修正します。

注記

この方法は手動のハンドコード JAXB では機能しません。
 @XmlSeeAlso(RealFoo.class)
 public interface IFoo {}
Copy to Clipboard Toggle word wrap
IFoo 上にある追加の @XmlSeeAlso により、 RealFoo インスタンスのアンマーシャリング方法を認識する JAXBContext を RESTEasy が作成できるようになります。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2026 Red Hat