Pivotal Knowledge Base

フォローする

GemFire HTTP Session Management Modules 由来クラスのインスタンシエーター登録が失敗する

環境 

 製品  バージョン
 Pivotal GemFire HTTP Session Management Modules for AppServer  8.2.x

概要

本記事では、GemFire HTTP session management modules for AppServer が、当該モジュール由来クラスのシリアライズ・デシリアライズ処理のために必要なインスタンシエーター登録の失敗により、正常に動作しない問題への回避策を提供する。 

事象

より複雑な構成(特にクライアントサーバー構成で WAN Gateway により複数クラスター間連携をしているような場合)で、GemFire HTTP session management modules が、関連クラスのインスタンシエーター登録の失敗により、正常動作しないことがある。その場合、ログファイルに以下のようなメッセージが見られる。

クライアント側のログメッセージ:

No Instantiator has been registered for class with id  27,315

サーバー側のログメッセージ:

Instantiator registered with id 27,315 class com.gemstone.gemfire.modules.session.filter.GemfireHttpSession
:
Error registering instantiator on pool: ...(任意の理由)

原因

GemFire HTTP session management modules for AppServer の現在の実装では、クライアント側からリモートで関連クラスのインスタンシエーター登録処理を行う。万が一、ネットワークの問題等で当該登録処理をリモートで行うことに失敗した場合、本問題が発生することがある。

解決策

ネットワーク関連問題がないにも関わらず、本問題が継続的に発生する場合は、以下の手順に従って関連クラスのインスタンシエーター登録を各ローカル環境で行うよう設定する。

  1. 全ての GemFire クライアントで関連クラスのインスタンシエーター登録を行う: ログメッセージに従って、以下のようにクライアントアプリケーションで対象クラスに対して Class.forName をコールすることで、ローカル環境におけるインスタンシエーター登録を実行することができる。
    Class.forName(GemfireHttpSession.class.getName());
    Class.forName(DeltaSessionAttributes.class.getName());
    Class.forName(DeltaQueuedSessionAttributes.class.getName());
    :
  2. 全ての GemFire キャッシュサーバーで関連クラスのインスタンシエーター登録を行う:ログメッセージに従って、以下のように cache.xml に対象クラスのクラス名とクラス ID を設定することで、ローカル環境におけるインスタンシエーター登録を実行することができる。
    <serialization-registration>
    <instantiator id="27315">
    <class-name>com.gemstone.gemfire.modules.session.filter.GemfireHttpSession</class-name>
    </instantiator>
    <instantiator id="347">
    <class-name>com.gemstone.gemfire.modules.session.filter.attributes.DeltaSessionAttributes</class-name>
    </instantiator>
    <instantiator id="3479">
    <class-name>com.gemstone.gemfire.modules.session.filter.attributes.DeltaQueuedSessionAttributes</class-name>
    </instantiator>
    :
    </serialization-registration>

 

 

コメント

Powered by Zendesk