問題: 私が使用しているソフトウェア、Lift には「ユーザー セッション」があり、ユーザー リクエスト間で保持される任意の種類のオブジェクトを配置できます (GC タイムアウトあり)。使いやすく強力ですが、大きな欠点が 1 つあります。それは、オブジェクトがシリアル化できないため、オブジェクトを他のサーバー インスタンスに分散して高可用性を実現できないことです。
ランダムなオブジェクトを取得し、リフレクションによってその構造を分析し、すべてのオブジェクトのデータを抽出できるマーシャラー/アンマーシャラーを作成し、オブジェクトを配布するために使用できる形式で返すことができる API/ツールはありますか?他の JVM。マーシャラー/アンマーシャラー自体はシリアライズ可能である必要があります。たとえば一時的な使用のように、一部のデータを無視する必要があることを明示的に定義する方法が必要です。また、一部の参照オブジェクトが実際にはシステム オブジェクト (シングルトン) であり、特別な方法で処理する必要があることを認識できる必要があります。理想的には、反復プロセスである必要があるため、マーシャリングするオブジェクトの「大きさ」に制限を設けることができます。
これは Terracotta が行うことと多少似ていますが、独自のトランスポートとバックエンドを実装したいという点と、それらの「エンハンサー」を使用したくない点が異なります。クラスのパッケージを制限するのは非常に難しいためです念のため実行時にすべてのクラスを変更する必要があり、これには非常にコストがかかります。
編集: 厳密に言えば、独自のトランスポートとバックエンドを持つことは絶対に必要というわけではありませんが、Terracotta のサーバーは単一障害点であるため、最小限のレプリケーションを強制できる完全に分散されたシステムが必要です。レベルであり、ユーザー セッションのコピーを所有するサーバーにリクエストを転送できる場所です。