IBM Books

Guia de Referência do Net.Data


Apêndice D. Net.Data for AIX

Net.Data substitui o DB2 WWW Connection. Detalhes para AIX estão incluídos no arquivo README que é fornecido com Net.Data. O arquivo README inclui estas informações:

Quando criar um ambiente de linguagem na plataforma AIX, você necessita executar alguns passos porque o AIX requer bibliotecas compartilhadas de carregamento. Em AIX, o ambiente de linguagem deve fornecer uma rotina que é chamada por Net.Data e retorna os endereços das rotinas de interface do ambiente de linguagem, tais como dtw_initialize() e dtw_execute().

O Net.Data usa a estrutura de dtw_fp para recuperar indicadores para as rotinas da interface do ambiente de linguagem, a partir de um ambiente de linguagem em AIX, e possui este formato:

typedef struct dtw_fp {
    int (* dtw_initialize_fp)();   /* indicador de função dtw_initialize  */
    int (* dtw_execute_fp)();      /* indicador de função dtw_execute    */
    int (* dtw_getNextRow_fp)();   /* indicador de função dtw_getNextRow */
    int (* dtw_cleanup_fp)();      /* indicador de função dtw_cleanup */
} dtw_fp_t;

Esta estrutura é passada para o ambiente de linguagem por Net.Data como um parâmetro na rotina dtw_getFp() quando a biblioteca compartilhada for carregada.

A estrutura de dtw_fp é passada como o único parâmetro. Essa estrutura contém um campo para cada interface suportada, e é de responsabilidade do ambiente de linguagem definir esses campos. Se o ambiente de linguagem estiver fornecendo a interface especificada, essa define o campo para o indicador de função daquela interface. Caso esse não esteja fornecendo a interface especificada, esse define o campo como NULL. A rotina dtw_getFp() no gabarito do programa mostra uma implementação correta dessa rotina.

A fim de Net.Data obter o indicador para essa rotina, quando a biblioteca compartilhada for carregada, a rotina dtw_getFp deve ser o primeiro ponto de entrada especificado no arquivo de exportação da biblioteca compartilhada. Um arquivo de exportação de amostra, para uma biblioteca chamada dtwsampshr.o, que suporta todas as rotinas de interface do ambiente de linguagem, se parece como este:

#!dtwsampshr.o
dtw_getFp
dtw_initialize
dtw_execute
dtw_getNextRow
dtw_cleanup

Se você tiver muitas chamadas para o ambiente de linguagem REXX, em seus sistema AIX, considere a definição de RXQUEUE_OWNER_PID para 0. Os macros que fazem muitas chamadas para o ambiente de linguagem REXX podem facilmente gerar muitos processos, gerando recursos de sistema. Por exemplo, se seu servidor da Web estiver processando 2 solicitações a cada segundo. Um macro que retorna 20 linhas com uma chamada a uma função REXX em um bloco ROW força o servidor a tentar gerar 80 processos (20 para as linhas * 2 para solicitações REXX * 2 para solicitações HTTP) a cada segundo, o qual é mais que muitos servidores podem manipular.

Definindo RXQUEUE_OWNER_PID para 0 evita que não mais de 2 processos se iniciem a cada segundo, o qual mesmo pequenos quadros de AIX podem manipular. Use DTW_rSETENV definido ao valor:

@DTW_rSETENV("RXQUEUE_OWNER_PID", "0")

Uma alternativa para o exemplo acima, o qual chama o ambiente de linguagem REXX no bloco ROW, é usar uma variável de tabela para passar toda a tabela recuperada para uma função REXX, assim o processamento ocorre em uma única chamada para o ambiente de linguagem.


[ Início da Página | Página Anterior | Próxima Página | Tabela de Conteúdos | Índice ]