BEA ホーム | 製品 | dev2dev | support | askBEA
 ドキュメントのダウンロード   サイト マップ   Glossary 
検索

WebLogic Server クラスタ ユーザーズ ガイド

 Previous Next Contents PDF で侮ヲ  

WebLogic クラスタの API

以下の節では、WebLogic クラスタ API について説明します。

 


API の使い方

WebLogic クラスタの公開 API は、単一インタフェース weblogic.rmi.cluster.CallRouter に含まれています。

Class java.lang.Object
Interface weblogic.rmi.cluster.CallRouter
(extends java.io.Serializable)

パラメータベースのルーティングを可能にするには、このインタフェースを実装するクラスを RMI コンパイラ (rmic) に与えなければなりません。以下のオプションを使って (すべて 1 行に入力します)、サービス実装時に rmic を実行します。

$ java weblogic.rmic -clusterable -callRouter
<callRouterClass> <remoteObjectClass>

リモート メッセージが呼び出されるたびに、クラスタ化可能なスタブからコール ルータを呼び出します。コール ルータは、その呼び出しの宛先のサーバの名前を返します。

クラスタ内の各サーバは、WebLogic Server Console で定義された名前でユニークに識別されます。これらの名前は、メソッド ルータがサーバを識別するための名前となります。

例 : ExampleImpl というクラスを例に説明します。このクラスは、メソッド foo でリモート インタフェース Example を実装します。

public class ExampleImpl implements Example {
public void foo(String arg) { return arg; }
}

この CallRouter を実装した ExampleRouter では、'arg' < "n" の場合にすべての foo 呼び出しが server1 (server1 に届かない場合は server3) に送られ、'arg' > "n" の場合にすべての呼び出しが server2 (server2 に届かない場合は server3) に送られます。

public class ExampleRouter implements CallRouter {
private static final String[] aToM = { "server1", "server3" };
private static final String[] nToZ = { "server2", "server3" };

public String[] getServerList(Method m, Object[] params) {
if (m.GetName().equals("foo")) {
if (((String)params[0]).charAt(0) < 'n') {
return aToM;
} else {
return nToZ;
}
} else {
return null;
}
}
}

次の rmic 呼び出しは、ExampleRouterExampleImpl を関連付けて、パラメータベースのルーティングを有効にします。

$ rmic -clusterable -callRouter ExampleRouter ExampleImpl

 


カスタム呼び出しルーティングと連結の最適化

オブジェクトがレプリカを呼び出している同じサーバ インスタンス上にレプリカがある場合、ローカル レプリカを使用する方が効率的なので、その呼び出しはロード バランシングの対象にはなりません。詳細については、連結されたオブジェクトの最適化を参照してください。

 

Back to Top Previous Next