[AIX HP-UX Linux Solaris Windows]

Exemplo: Implementando Orientadores Padrão

O seguinte exemplo mostra como usar um orientador customizado padrão.

Esse código de origem de exemplo é semelhante ao orientador HTTP do Load Balancer padrão. Ele funciona da seguinte forma:
  1. Um pedido de envio, um comando "HEAD/HTTP", é emitido.
  2. A resposta é recebida. As informações não são analisadas, mas a resposta faz com que o método getLoad seja terminado.
  3. O método getLoad retorna 0 para indicar sucesso ou -1 para indicar uma falha.

O orientador opera no modo normal de modo que a medida de carregamento seja baseada no tempo decorrido em milissegundos necessário para executar as operações de abertura, de envio, de recebimento e de fechamento de soquete.

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";

  //-------- 
  // Construtor
    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; 
  } 
} 



Referências relacionadas
Exemplo: Orientador de Amostra
Tópico de Referência Tópico de Referência    

Termos de Uso | Feedback

Última atualizaçãoÚltima atualização: Jun 28, 2011 4:11:22 PM EDT
Nome do arquivo: rprf_advexstand.html