7.4.2. User Friendly Externalizers


最も単純な形式では、ユーザーはマーシャリング/アンマーシャリングするタイプに Externalizer 実装を提供し、使用する外部ナライザークラスを示す {@link SerializeWith} アノテーションを使用してマーシャリングされたタイプクラスにアノテーションを付けるだけです。以下に例を示します。

import org.infinispan.commons.marshall.Externalizer;
import org.infinispan.commons.marshall.SerializeWith;

@SerializeWith(Person.PersonExternalizer.class)
public class Person {

   final String name;
   final int age;

   public Person(String name, int age) {
      this.name = name;
      this.age = age;
   }

   public static class PersonExternalizer implements Externalizer<Person> {
      @Override
      public void writeObject(ObjectOutput output, Person person)
            throws IOException {
         output.writeObject(person.name);
         output.writeInt(person.age);
      }

      @Override
      public Person readObject(ObjectInput input)
            throws IOException, ClassNotFoundException {
         return new Person((String) input.readObject(), input.readInt());
      }
   }
}

ランタイム時に JBoss Marshalling はオブジェクトを検査し、それがマーシャリング可能である(アノテーションに想定)であることを検出します。そのため、渡された外部izer クラスを使用してマーシャリングします。外部データベースの実装をコードをより簡単にするために、型 < T > をマーシャリング/アンマーシャリングするオブジェクトのタイプとして定義するようにしてください。

この外部ライザーの定義方法は非常にユーザーフレンドリーですが、以下のような不利な点があります。

  • モデルの制約により、同じクラスの異なるバージョンのサポートや Externalizer クラスをマーシャリングする必要があるなどの理由で、この方法で生成されたペイロードサイズは最も効率的ではありません。
  • このモデルでは、マーシャリングされたクラスには link:https://access.redhat.com/webassets/avalon/d/red-hat-data-grid/7.3/api/org/infinispan/commons/marshall/SerializeWith.html を指定する必要があります。ただし、ユーザーはソースコードが利用できないクラス用に Externalizer を指定する必要がある場合や、他の制約では変更できません。
  • このモデルによるアノテーションの使用は、ユーザーから離れるマーシャリング層などの低レベルの詳細を抽象化しようとするフレームワーク開発者やサービスプロバイダーに制限される場合があります。

これらの欠点のいずれかの影響を受ける場合、外部担当者を提供する代替方法は、より高度な外部管理者で利用できます。

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2026 Red Hat
トップに戻る