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

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

例: advisor から戻されるデータの使用

アプリケーション・サーバーの既存パーツに対して標準呼び出しを使用する場合も、カスタム advisor のサーバー・サイドで同等のコードが提供されるように新規コードを追加する場合も、 戻された負荷値の検査およびサーバーの動作の変更が必要になることがあります。

この調査は、Java StringTokenizer クラスとそれに関連付けられたメソッドを使用すれば容易に行うことが できます。通常の HTTP コマンドのコンテンツは、
GET /index.html HTTP/1.0 90
です。
このコマンドへの通常の応答は、次のようになります。
HTTP/1.1 200 OK
Date: Mon, 20 November 2000 14:09:57 GMT
Server: Apache/1.3.12 (Linux and UNIX)
Content-Location: index.html.en
Vary: negotiate
TCN: choice
Last-Modified: Fri, 20 Oct 2000 15:58:35 GMT
ETag: "14f3e5-1a8-39f06bab;39f06a02"
Accept-Ranges: bytes
Content-Length: 424
Connection: close
Content-Type: text/html
Content-Language: en

<!DOCTYPE HTML PUBLIC "-//w3c//DTD HTML 3.2 Final//EN">
<HTML><HEAD><TITLE>Test Page</TITLE></HEAD>
<BODY><H1>Apache server</H1>
<HR>
<P><P>This Web server is running Apache 1.3.12.
</P>
<P><IMG SRC="apache_pb.gif" ALT="">
</P></P>
</HR>
</BODY></HTML>
特に HTTP 戻りコードなどの重要な項目は、1 行目に含まれます。HTTP 仕様では、戻りコードによって次のように区別されます。

サーバーが戻す可能性のあるコードが正確に分かっている場合は、コードをこの例のように詳細に書き込む 必要はありません。ただし、検出する戻りコードを制限すると、プログラムのその後の柔軟性が制限されてしまう可能性があります。

次の例は、最小限の HTTP クライアントが組み込まれている、スタンドアロンの Java プログラム です。この例では、HTTP 応答を調べるために、単純な汎用パーサーを 呼び出します。
import java.io.*;
import java.util.*;
import java.net.*;

public class ParseTest {
   static final int iPort = 80;
   static final String sServer = "www.ibm.com";
   static final String sQuery = "GET /index.html HTTP/1.0¥r¥n¥r¥n";
   static final String sHTTP10 = "HTTP/1.0";
   static final String sHTTP11 = "HTTP/1.1";

   public static void main(String[] Arg) {
     String sHTTPVersion = null;
     String sHTTPReturnCode = null;
     String sResponse = null; int iRc = 0;
     BufferedReader brIn = null;
     PrintWriter psOut = null;
     Socket soServer= null;
     StringBuffer sbText = new
     StringBuffer(40);

   try {
     soServer = new Socket(sServer, iPort);
     brIn = new BufferedReader(new InputStreamReader(
                                   soServer.getInputStream()));
     psOut = new PrintWriter(soServer.getOutputStream());
     psOut.println(sQuery);
     psOut.flush();
     sResponse = brIn.readLine();
     try {
       soServer.close();
     } catch (Exception sc) {;}
   } catch (Exception swr) {;}

   StringTokenizer st = new StringTokenizer(sResponse, " ");
   if (true == st.hasMoreTokens()) {
     sHTTPVersion = st.nextToken();
     if (sHTTPVersion.equals(sHTTP110) || sHTTPVersion.equals(sHTTP11)) {
       System.out.println("HTTP Version: " + sHTTPVersion);
     } else { 
       System.out.println("Invalid HTTP Version: " + sHTTPVersion); 
     } 
   } else {
     System.out.println("Nothing was returned"); 
     return; 
   } 

   if (true == st.hasMoreTokens()) { 
     sHTTPReturnCode = st.nextToken(); 
     try { 
       iRc = Integer.parseInt(sHTTPReturnCode); 
     } catch (NumberFormatException ne) {;}

     switch (iRc) { 
     case(200):
       System.out.println("HTTP Response code: OK, " + iRc); 
       break; 
     case(400): case(401): case(402): case(403): case(404): 
       System.out.println("HTTP Response code: Client Error, " + iRc); 
       break; 
     case(500): case(501): case(502): case(503): 
       System.out.println("HTTP Response code: Server Error, " + iRc); 
       break; 
     default: 
       System.out.println("HTTP Response code: Unknown, " + iRc); 
       break; 
     } 
   }

   if (true == st.hasMoreTokens()) { 
     while (true == st.hasMoreTokens()) { 
       sbText.append(st.nextToken()); 
       sbText.append(" "); 
       } 
     System.out.println("HTTP Response phrase: " + sbText.toString()); 
   } 
  } 
}



関連参照
例: サンプル 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_advexreturn.html