WebSphere Load Balancer for IPv4 and IPv6
             オペレーティング・システム: AIX、HP-UX、Linux、Solaris、Windows

             目次と検索結果の個別設定

例: サイド・ストリーム advisor の実装

以下の例では、サイド・ストリーム advisor を実装する方法を 示します。このサンプルでは、advisor の基本によってオープンされる標準ソケットの抑制を具体的に示しています。代わりの方法として、この advisor では、サイド・ストリーム Java ソケットをオープンして サーバーを照会します。通常のクライアント・トラフィックと異なるポートを使用して advisor 照会を listen するサーバーに対しては、このプロシージャーが有効です。

この例の場合、サーバーは、ポート 11999 上で listen しており、照会された時点で 16 進の int 「4」で 負荷値を戻します。このサンプルは、置換モードで実行されます。つまり、advisor コンストラクターの最終パラメーターが true に 設定されていて、advisor の基本コードでは、経過時間ではなく戻された負荷値が使用されます。

初期化ルーチン内の supressBaseOpeningSocket() に対する呼び出しに注意してください。 データが送信されない場合の基本ソケットの抑制は 不要です。例えば、advisor がサーバーに接続できるかどうかを確認する際に、ソケットのオープンが必要になった場合 などです。この選択を行う前に、アプリケーションに必要なものを入念に調べてください。

package CustomAdvisors; 
import java.io.*; 
import java.net.*; 
import java.util.*; 
import java.util.Date; 
import com.ibm.internet.lb.advisors.*; 
import com.ibm.internet.lb.common.*; 
import com.ibm.internet.lb.server.SRV_ConfigServer; 

public class ADV_sidea extends ADV_Base implements ADV_MethodInterface { 
  static final String ADV_NAME = "sidea"; 
  static final int ADV_DEF_ADV_ON_PORT = 12345; 
  static final int ADV_DEF_INTERVAL = 7; 

  // create an array of bytes with the load request message 
  static final byte[] abHealth = {(byte)0x00, (byte)0x00, (byte)0x00,
                                  (byte)0x04}; 

  public ADV_sidea() { 
    super(ADV_NAME, "3.0.0.0-03.31.00", ADV_DEF_ADV_ON_PORT, 
          ADV_DEF_INTERVAL, "", 
          true);                     // replace mode parameter is true 
    super.setAdvisor( this ); 
  } 

//-------- 
// ADV_AdvisorInitialize 
  public void ADV_AdvisorInitialize() 
  { 
    suppressBaseOpeningSocket();        // tell base code not to open the 
                                        // standard socket 
    return; 
  } 

//-------- 
// getLoad 
  public int getLoad(int iConnectTime, ADV_Thread caller) { 
    int iRc; 
    int iLoad = ADV_HOST_INACCESSIBLE;    // -1 
    int iControlPort = 11999;             // port on which to communicate
                                          // with the server 
    String sServer = caller.getCurrentServerId(); // address of server to query 
    try { 
      socket soServer = new Socket(sServer, iControlPort);   // open socket to 
                                                             // server 
      DataInputStream disServer = new DataInputStream( 
                                                      soServer.getInputStream()); 
      DataOutputStream dosServer = new DataOutputStream( 
                                                      soServer.getOutputStream()); 
      int iRecvTimeout = 10000;           // set timeout (in milliseconds) 
                                          // for receiving data 
      soServer.setSoTimeout(iRecvTimeout); 
      dosServer.writeInt(4);              // send a message to the server 
      dosServer.flush(); 
      iLoad = disServer.readByte();       // receive the response from the server 

    } catch (exception e) { 
      system.out.println("Caught exception " + e); 
    } 
    return iLoad;                         // return the load reported from the server 
  } 
}



関連参照
例: サンプル advisor
参照トピック    

ご利用条件 | フィードバック

最終更新: 2008 年 7 月 31 日 3:18:06 PM EDT
http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=/com.ibm.websphere.edge.doc/lb/info/ae/rprf_advexss.html