ORACLE JAPAN Server Release 6.1

 

  |  

  WebLogic Server ホーム   |     WebLogic Server クラスタ   |   前へ   |   次へ   |   目次   |   索引   |   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 の Administration 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 page next page