EJBのロードバランス
EJBのロードバランス
ここでは、JBoss・WebLogic ServerにおけるEJBのロードバランシングを比較します。両アプリケーションサーバがサポートしているロードバランシングの方式には、以下のような違いがあります。
| アプリケーション サーバ |
EJBの種別 | ロードバランシングの方式 |
| JBoss | ステートレスセッションBean |
|
| ステートフルセッションBean | ||
| エンティティBean | ||
| WebLogic | ステートレスセッションBean |
|
| ステートフルセッションBean | ||
| エンティティBean |
JBossはどの種類のEJBを利用しても、HomeインターフェースとRemoteインターフェースの両方に対して、サポートしているすべてのロードバランシングの方式を設定することができます。WebLogic Serverは、Homeインターフェースに対してはサポートしているすべてのロードバランシング方式を設定できます。
「アフィニティ+ラウンドロビン」方式を選択すると、アフィニティが外部Javaクライアントとサーバインスタンスの接続を管理して、サーバインスタンス間の接続には、ラウンドロビンが使用されます。
EJBのフェイルオーバー
ここでは、JBoss・WebLogic ServerにおけるEJBのレプリケーションを比較します。ステートレスセッションBeanはレプリケーションの必要がないので、ステートフルセッションBeanの機能比較を行います。
ステートフルセッションBean
JBossのステートフルセッションBeanは、EJBコンテナがisModifiedメソッドを呼び出したときに、trueがreturnされるとレプリケーションを行います。このisModifiedメソッドを実装することで、レプリケーションの発生をコントロールできます。すべてのメンバ変数がレプリケーションの対象となります。
WebLogic ServerのステートフルセッションBeanは、トランザクションのあるEJBの場合、コミット直後にレプリケーションされます。トランザクションのないEJBの場合、メソッド呼び出しの直後にレプリケーションされます。変更されたメンバ変数だけがレプリケーションの対象となる(差分)ので、通信コスト を抑えることが可能です。
ステートフルセッションBeanのレプリケーションにおいても、JBossは細かい設定が可能です。ただし、一般的なニーズを考慮すれば、WebLogic Serverの機能だけで十分と思われます。