Use os seguintes métodos do orientador e chamadas de funções nos seus orientadores
customizados.
Certifique-se de que
orientadores customizados precisem possuir todas as rotinas necessárias. Os orientadores devem possuir os
seguintes métodos de classe base:
- Uma rotina do construtor. O construtor chama o construtor de classe de base.
- Um método ADV_AdvisorInitialize. Esse método fornece uma maneira de executar etapas
adicionais depois que a classe base concluir a inicialização.
- Uma rotina getLoad. A classe do orientador base executa a abertura do soquete; a função
getLoad precisa apenas emitir os pedidos de envio e de recebimento apropriados
para concluir o ciclo de orientação.
Construtor (fornecido pelo orientador base)
public <advisor_name> {
String sName;
String sVersion;
int iDefaultPort;
int iInterval;
String sDefaultLogFileName;
boolean replace
)
- sName
- O nome do orientador customizado
- sVersion
- A versão do orientador customizado
- iDefaultPort
- O número da porta no qual entrar em contato com o servidor se o número da porta for
especificado na chamada.
- iInterval
- O intervalo no qual o orientador consultará os servidores.
- sDefaultLogFileName
- Esse parâmetro é necessário mas não é usado. O único valor aceitável é uma
cadeia nula, ""
- replace
- Especifica se as funções desse orientador estão ou não no modo de substituição. Os valores possíveis são:
- true – Substitui o carregamento calculado pelo código do orientador base
pelo valor relatado pelo orientador customizado.
- false – Inclui o valor de carregamento relatado pelo orientador customizado
no valor de carregamento calculado pelo código do orientador base.
Método ADV_AdvisorInitialize()
void ADV_AdvisorInitialize()
Esse método é fornecido para executar qualquer inicialização que possa ser necessária
para o orientador customizado. Esse método é chamado depois que o módulo do orientador base ser iniciado.
Em muitos casos, incluindo os orientadores padrão, esse método não é usado e o código consiste
apenas de uma instrução de retorno. Esse método pode ser usado para chamar o
método suppressBaseOpeningSocket(), que é válido apenas para
a partir desse método.
Em muitos casos, incluindo os orientadores padrão, esse método não é usado e o código consiste
apenas de uma instrução de retorno.
Esse método pode ser usado para chamar o
método suppressBaseOpeningSocket, que é válido apenas para
a partir do método ADV_AdvisorInitialize.
Método ADVLOG()
A função ADVLOG permite que um orientador customizado
grave uma mensagem de texto no arquivo de log do orientador base. O formato é o seguinte:
void ADVLOG (int logLevel, String message)
Esse comando possui os seguintes parâmetros:
- logLevel
- O nível de status no qual a mensagem é gravada no arquivo de log. O arquivo de log do
orientador é organizado em estágios; a maioria das mensagens urgentes recebe
um nível de status 0 e mensagens menos urgentes recebem números maiores. A maioria do tipo
detalhado de mensagem recebe o nível de status 5. Esses níveis são usados para controlar os
tipos de mensagens que o usuário recebe em tempo real (o comando dscontrol é usado
para configurar a verbosidade). Erros catastróficos devem sempre ser registrados
no nível 0.
- Mensagem
- O tipo de mensagem a ser gravado no arquivo de log. O valor para esse parâmetro é
uma cadeia Java padrão.
Função getAdvisorName
A função getAdvisorName retorna uma cadeia
Java com a parte do sufixo do seu nome de orientador customizado.
Por exemplo, para um orientador chamado ADV_cdload.java, essa função retorna o valor
cdload.
Essa função não usa parâmetros.
Evitar Problemas: Não é possível esse valor ser
alterado durante uma instanciação de um orientador.
gotcha
caller.getCurrentServerId()
A função getCurrentServerId
retorna uma cadeia Java que é uma representação exclusiva para o servidor atual. Normalmente, esse valor é alterado sempre que você chama seu orientador customizado,
porque o código base do orientador consulta todas as máquinas servidores em série.
Essa função não usa parâmetros.
caller.getCurrentClusterId()
A função getCurrentClusterId
retorna uma cadeia Java que é uma representação exclusiva para o cluster atual. Normalmente, esse valor é alterado sempre que você chama seu orientador customizado,
porque o código base do orientador consulta todos os clusters em série.
Essa função não usa parâmetros.
caller.getSocket()
A chamada da função getSocket retorna um soquete
Java que representa o soquete aberto para o servidor atual para a
comunicação.
Essa função não usa parâmetros.
caller.getLatestLoad()
A função getLatestLoad chama um
orientador customizado para obter o valor de carregamento mais recente para um
determinado objeto do servidor. Os valores de carregamento são mantidos em tabelas internas pelo código
do orientador base e pelo daemon do gerenciador. Essa chamada de função é útil se você desejar tornar o
comportamento de protocolo ou de porta dependente do comportamento de outro.
Por exemplo, você pode usar essa chamada de função em um orientador customizado que desativou um determinado servidor de
aplicativos se o servidor Telnet nessa mesma máquina foi desativado.
A sintaxe é:
int caller.getLatestLoad (String clusterId, int port, String serverId)
Os três argumentos juntos definem um objeto do servidor.
Esse comando possui os seguintes parâmetros:
- clusterId
- O identificador de cluster no objeto do servidor para o qual o valor de carregamento atual
é obtido. Esse argumento deve ser uma cadeia Java.
- port
- O número da porta do objeto do servidor para o qual o valor de carregamento atual
é obtido.
- serverId
- O identificador de servidor do objeto do servidor para o qual o valor de carregamento atual
é obtido. Esse argumento deve ser uma cadeia Java. O valor de retorno é um número inteiro.
- Um valor de retorno positivo representa o valor de carregamento real designado para o
objeto que foi consultado.
- O valor -1 indica que o servidor solicitado está inativo.
- O valor -2 indica que o status do servidor solicitado é desconhecido.
caller.receive()
A função de recebimento obtém informações
a partir da conexão de soquete. A sintaxe é:
caller.receive(StringBuffer *response)
Esse comando possui os seguintes parâmetros:
- response
- Esse é um buffer de cadeia no qual os dados recuperados são colocados. Além disso, a função retorna
um valor de número inteiro com o seguinte significado:
- 0 indica que os dados foram enviados com êxito.
- Um número negativo indica um erro.
caller.send()
A função de envio usa a conexão de soquete
estabelecida para enviar um pacote de dados para o servidor usando a porta especificada. A sintaxe é a seguinte:
caller.send(String command)
Esse comando possui os seguintes parâmetros:
- command
- Essa é uma cadeia que contém os dados a serem enviados para o servidor. A função retorna
um valor de número inteiro com o seguinte significado:
- 0 indica que os dados foram enviados com êxito.
- Um número negativo indica um erro.
getLoad()
int getLoad( int iConnectTime; ADV_Thread *caller )
Essa função possui os seguintes parâmetros:
- iConnectTime
- A quantia de tempo, em milissegundos, que é necessária para que a conexão seja concluída.
Essa medida de carregamento é executada pelo código do orientador base e transmitida para
o código do orientador customizado, que pode usar ou ignorar a medida quando retornar
o valor de carregamento. Se a conexão falhar, esse valor é configurado para -1.
- caller
- A instância da classe do orientador base onde os métodos do orientador base são
fornecidos. Chamadas de função disponíveis para os orientadores customizados: Os
métodos ou funções descritos nas seguintes seções podem ser chamados a partir de
orientadores customizados. Esses métodos são
suportados pelo código do orientador base. Algumas dessas chamadas de funções
podem ser feitas diretamente, por exemplo, function_name(), mas outras requerem o responsável
pela chamada do prefixo. O responsável pela chamada representa a instância do orientador base que suporta o
orientador customizado que está sendo executado.
getAdviseOnPort()
A função getAdviseOnPort retorna o número da porta
no qual o orientador customizado de chamada está em execução.
O valor de retorno
é um número inteiro Java (int) e a função não usa parâmetros.
Nota: Não é possível esse valor ser
alterado durante uma instanciação de um orientador.
getAdvisorName()
A função getAdvisorName retorna uma cadeia
Java com a parte do sufixo do seu nome de orientador customizado. Por exemplo, para um orientador chamado ADV_cdload.java, essa função retorna o valor
cdload.
Essa função não usa parâmetros. Note que não é possível alterar esse valor
durante uma instanciação de um orientador.
getInterval()
A função getInterval retorna o intervalo do
orientador, ou seja, o número de segundos entre os ciclos do orientador. Esse valor é
igual ao valor padrão configurado no construtor do orientador customizado, a menos que
o valor seja modificado no tempo de execução usando o comando dscontrol.
O valor de retorno é um número inteiro Java (int).
A função não usa parâmetros.
suppressBaseOpeningSocket()
A função suppressBaseOpeningSocket
permite que um orientador customizado especifique se o código do orientador base abre um
soquete TCP para o servidor em nome do orientador customizado. Se o orientador não usar comunicação direta
com o servidor para determinar seu status, pode não ser necessário abrir esse
soquete. A chamada da função
pode ser emitida apenas uma vez e deve ser emitida a partir da rotina Método ADV_AdvisorInitialize().
A função não usa parâmetros.