Example: Implementing standard advisors

The following example demonstrates how to use a standard custom advisor.

This sample source code is similar to the standard Load Balancer HTTP advisor. It functions as follows:
  1. A send request, a "HEAD/HTTP" command, is issued.
  2. A response is received. The information is not parsed, but the response causes the getLoad method to terminate.
  3. The getLoad method returns 0 to indicate success or -1 to indicate a failure.

This advisor operates in normal mode, so the load measurement is based on the elapsed time in milliseconds required to perform the socket open, send, receive, and close operations.

package CustomAdvisors;
import com.ibm.internet.lb.advisors.*;
public class ADV_sample extends ADV_Base implements ADV_MethodInterface {
  static final String ADV_NAME ="Sample";
  static final int ADV_DEF_ADV_ON_PORT = 80;
  static final int ADV_DEF_INTERVAL = 7;
  static final String ADV_SEND_REQUEST =
    "HEAD / HTTP/1.0\r\nAccept: */*\r\nUser-Agent: " + 
    "IBM_Load_Balancer_HTTP_Advisor\r\n\r\n";

  //-------- 
  // Constructor
    public ADV_sample() { 
      super(ADV_NAME, "3.0.0.0-03.31.00", 
            ADV_DEF_ADV_ON_PORT, ADV_DEF_INTERVAL, "", 
            false); 
      super.setAdvisor( this );
   } 

  //-------- 
  // ADV_AdvisorInitialize
    public void ADV_AdvisorInitialize() { 
      return;                               // usually an empty routine 
    } 

  //-------- 
  // getLoad 

    public int getLoad(int iConnectTime, ADV_Thread caller) { 
      int iRc; 
      int iLoad = ADV_HOST_INACCESSIBLE;           // initialize to inaccessible 
      
      iRc = caller.send(ADV_SEND_REQUEST);         // send the HTTP request to 
                                                   // the server 
      if (0 <= iRc) {                              // if the send is successful
        StringBuffer sbReceiveData = new StringBuffer("");      // allocate a buffer 
                                                                // for the response 
      iRc = caller.receive(sbReceiveData);         // receive the result 
      
      // parse the result here if you need to 

      if (0 <= iRc) {                              // if the receive is successful 
        iLoad = 0;                                 // return 0 for success 
      }                                            // (advisor's load value is ignored by 
    }                                              // base in normal mode) 
    return iLoad; 
  } 
} 
Reference topic    

Terms and conditions for information centers | Feedback

Last updated: September 12, 2012 11:41 PM EDT
File name: rprf_advexstand.html