7.4. ユーザー定義の外部ナライザー


Red Hat Data Grid の主な機能の 1 つは、一部の機能を提供するために、多くの場合、オブジェクトをマーシャリング/アンマーシャリングする必要があることです。たとえば、ライトスルーまたはライトベロワードキャッシュストアにオブジェクトを格納する必要がある場合、保存されたオブジェクトにはマーシャリングが必要です。Red Hat Data Grid ノードのクラスターが形成されている場合は、同梱されるオブジェクトマーシャリングが必要です。レイジーデシリアライズを有効にした場合でも、正しいクラスローダーで遅延アンマーシャリングできるようにオブジェクトをマーシャリングする必要があります。

標準の JDK シリアライゼーションの使用は遅くなり、大きすぎるペイロードを生成し、帯域幅の使用量に影響を及ぼす可能性があります。その上では、JDK シリアライゼーションは不変である可能性のあるオブジェクトと適切に動作しません。これらの問題を回避するため、Red Hat Data Grid はマーシャリング/アンマーシャリングオブジェクトに JBoss Marshalling を使用します。JBoss マーシャリングは高速で、非常にスペース効率の高いペイロードを生成し、その上にアンマーシャリング時にユーザーがオブジェクトの作成方法を完全に制御できるため、オブジェクトをイミュータブルに保つことができます。

5.0 からは、Red Hat Data Grid のユーザーはこのマーシャリングフレームワークを活用できるようになり、独自の外部ナライザーの実装も提供できるようになりましたが、外部ファイナライザーの提供方法を見つける前に、そのメリットを見ていきましょう。

7.4.1. Externalizers の利点

JDK では、最もシンプルな形式でオブジェクトをシリアライズする簡単な方法は、java.io. 336 を拡張するだけですが、既知のとおり、これは遅くなり、大きすぎるペイロードを生成します。シリアライズを行う別の方法として、JDK シリアライゼーションに依存してオブジェクトが java.io.Externalizable を拡張することです。これにより、ユーザーは独自のクラスをマーシャリング/アンマーシャリングすることができますが、低速な JDK シリアライゼーションに依存して、シリアライゼーションするクラスを強制的に拡張するために強制するので、深刻な問題があります。1 つ目は、この 2 つの副作用があります。1 つ目は、ソースを所有せず、そうでないクラスのソースコードを変更するだけで良いからです。2 つ目の点として、外部化可能な実装はオブジェクト作成を制御しないので、状態を復元するためにセットメソッドを追加することが強制されるため、イミュータブルなオブジェクトが変更不能になることがあります。

JDK のシリアライズに依存する代わりに、Red Hat Data Grid は JBoss Marshalling を使用してオブジェクトをシリアライズし、特定のクラスのオブジェクトをシリアライズしたフォームに変換する方法を認識する Externalizer インターフェース実装に関連付けてクラスをシリアライズする必要があります。Red Hat Data Grid は、Externalizer を実装するためにオブジェクトのシリアライズを強制しません。実際、別のクラスを使用して Externalizer インターフェースを実装することが推奨されます。これは、JDK のシリアライゼーションとは異なり、Externalizer 実装がストリームからオブジェクトを読み取ろうとするときに特定クラスのオブジェクトの作成方法を制御するためです。つまり、readObject()実装はターゲットクラスのオブジェクトインスタンスを作成するため、ユーザーはこれらのインスタンスを作成する方法(ファクトリーまたはリフレクションによる直接インスタンス化など)をどのように柔軟にするか、またターゲットクラスを不変に保つことができます。この種の外部データベースアーキテクチャーは、単一の責任 の原則など、適切な OOP 設計原則をプロモートします。

これは非常に一般的であり、一般的には、Externalizer 実装を外部化するクラス内の内部静的パブリッククラスとして保存できます。これを行う利点は、関連するコードが一緒に維持され、維持が容易になります。Red Hat Data Grid では、Red Hat Data Grid をユーザー定義の外部ライザーとプラグインする方法が 2 つあります。

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2026 Red Hat
トップに戻る