ナビゲーションをスキップ

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

  前 次 前/次ボタンと目次ボタンとの区切り線 目次  

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

 


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

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

 

フッタのナビゲーションのスキップ  ページの先頭 前 次