Posted by Clayton Casteli On May - 11 - 2014 0 Comment

Ja falamos sobre Oracle Tuxedo 12 nos posts Tuxedo Introdução  e  Instalação do Oracle Tuxedo 12c no Linux Fedora 20. Nesse post vamos falar sobre Configuração e Estruturação de Aplicações Oracle Tuxedo 12.

Os assuntos que serão abordados neste post são:

  1. O arquivo UBBCONFIG;
  2. Comandos úteis do Oracle Tuxedo 12;
  3. Os Métodos da API em linguagem C do Oracle Tuxedo 12;
  4. Estrutura de uma aplicação Oracle Tuxedo 12;

 O arquivo UBBCONFIG;

O arquivo de configuração do TUXEDO,  conhecido como UBBCONFIG, é o mais importante arquivo de configuração do ambiente Tuxedo e de uma aplicações Tuxedo. O UBBCONFIG é um arquivo de texto que contém várias seções para estruturar uma aplicação, e cada seção tem parâmetros com os respectivos valores para configurar e gerenciar uma aplicação Tuxedo.

 O UBBCONFIG  tem oito seções, dessas cinco seções são necessários para todos as configurações:  RESOURCES , MACHINES , GROUPS , SERVERS , e SERVICES; as outras  seções (NETGROUPS , NETWORK , e ROUTING) são opcionais. Este é um arquivo de texto, ele pode ser criado ou mantido usando qualquer editor de texto.

Vamos explicar um pouco mais sobre a responsabilidades de cada seção do UBBCONFIG.

  • RESOURCES - Esta seção contém informações referentes a todos os recursos do domínio;
  • MACHINES - A secção de MACHINES é onde define os nomes lógicos para uma máquina física. Todos os parâmetros precisam especificar uma máquina específica.
  • GROUPS - A secção GROUPS ajuda a especificar um nome lógico para um grupo do mesmo tipo de servidores e /ou serviços dentro de uma máquina. Pelo menos um grupo de servidores precisa ser definido nesta seção.
  • NETWORK - Na seção NETWORK, você precisa configurar uma rede para um ambiente de LAN para comunicação entre a aplicação do Tuxedo e os vários nós de domínio.
  • SERVER - A seção SERVER fornece informações sobre as condições iniciais para servidores inicializados no sistema. São mapeados os programas criados pelo buildserver. Esses programas ficam em execução esperando requisições.
  • SERVICE - A seção de SERVICE fornece informações sobre os serviços utilizados por um aplicativo. Embora o Tuxedo não exija é uma boa prática para manutenções futuras ter essa lista de serviços.
  • ROUTING - A seção ROUTING fornece informações para roteamento  de dados de de serviço, solicitações usando tipos de buffer do Tuxedo como o FML, VIEW, e buffers XML.
  • NETGROUPS - A seção NETGROUPS descreve os grupos de rede disponíveis para a aplicação em um ambiente de LAN. Existem apenas três parâmetros neste grupo: NETGROUP é o nome do grupo de rede, enquanto NETGRPNO e NETPRIO com valores numéricos são utilizado para especificar a prioridade deste grupo de rede.

Para mais detalhes sobre os componentes do UBBCONFIG ler: Reference of UBBCONFIG

 

Comandos úteis do Oracle Tuxedo 12;

  • Comando buildclient - Usado para construir um módulo Tuxedo ATMI cliente, sintaxe:
buildclient [-v] [{-r rmname | -w }][ -o name] [ -f firstfiles] [ -l lastfiles]

Atributos do comando:

•     -v : The buildclient command should work in verbose mode to ensure that
all the messages can be seen during compilation.
•     -r : This option specifies the resource manager associated with this client to
be part of a transaction.
•     -w : This option specifies that the client is to be built using the workstation
libraries; native mode is default.
•     -o : This option specifies the filename of the output load module. If not
supplied, the load module is named a.out .
•     -f : This option specifies one or more user files to be included first in the
compilation and link edit phases of buildclient , before the Oracle Tuxedo
ATMI libraries.
•     -l : This option specifies one or more user files to be included last in the
compilation and link edit phases of buildclient , after the Oracle Tuxedo
ATMI libraries.
  • Comando buildserver - Usado para construir módulos Tuxedo ATMI servidor, sintaxe:
buildserver [-C] [-M] [-s services[:func[()]]][-v] [-o outfile] [-f firstfiles] [-l lastfiles][{-r|-g} rmname] [{-r|-g} rmid:rmname] [-E envlabel] [-t]

Atributos do comando:

•     -C : This option stipulates the COBOL compilation.
•     -M : This option specifies the server to be associated with multiple XA-
complaint resource managers; this option is mandatory.
•     -s : The names of services that can be advertised when the server is booted.
•     -v : The buildserver command should work in verbose mode to ensure that
all messages can be seen during compilation.
•     -o : This option specifies the filename of the output load module. If not
supplied, the load module is named SERVER .
•     -f : This option specifies one or more user files to be included first in the
compilation and link edit phases of buildserver , before the Oracle Tuxedo
ATMI libraries.
•     -l : This option specifies one or more files to be included last in the
compilation and link edit phases of buildserver , after the Oracle Tuxedo
ATMI libraries.
•     -r : This option specifies the resource manager associated with this server.
  • O Comando tmloadcf - Esse comando é utilizado para converter a versão em texto do UBBCONFIG para a versão binária para o boot do Tuxedo, sintaxe.
tmloadcf [-n] [-y] [-c] [-b blocks] {UBBCONFIG_file | -}

Atributos do comando

•     -n : This option is used for checking the syntax of the UBBCONFIG file
without updating the TUXCONFIG file.
•     -y : This option is used for prompting on the console.
•     -c : This option is used to calculate and display the minimum IPC
resources needed for this configuration.
•     -b : This option specifies the block size for the device. It is a recommended
option if you are using a raw device. You may ignore it if the filesystem
already exists.
  • O comando tmboot - Inicialização dos servidores e serviços do Tuxedo, sintaxe;
tmboot [-l lmid] [-g grpname] [-i srvid] [-s aout] [-o sequence] [-S] [-A] [-b] [-B lmid] [-e command] [-w] [-y] [-g][-n] [-c] [-m] [-M] [-d1]

Atributos do comando;

•     -l lmid : All the groups associated with this LMID value will boot and all
associated TMSs and gateway servers will also boot accordingly.
•     -g grpname : The same as above for group names mentioned by grpname .
•     -s server name : All servers in the SERVERS section are executed by
server name .
•     -o sequence : All servers with the sequence parameter are executed.
•     -S : All servers in the SERVERS section are executed.
•     -A : All administrative servers for machines in the MACHINES section are
executed. Use this option to guarantee that the DBBL, all BBLs, and the
BRIDGE processes are brought up in the correct order.
•     -b : Boot the system from the BACKUP node (without making this machine
the master).
•     -B lmid : A BBL is started on a processor with the logical name lmid .
•     -m 1-n : Temporarily resets the runtime MIN values for servers specified with
the -s option with a common MIN value.
•     -M : This is used to boot all the administrative processes on the master machine.
•     -d1 : This is used to display on the standard output; it is very useful when
you use sdb to debug application services.
•     -e command : This option causes the command to be executed if any process
fails to boot successfully.
•     -w : This option should be used with caution. It informs tmboot to boot
another server without waiting for servers to complete initialization.
•     -y : This option means that you need to boot all the administrative and
server processes.
•     -q : This option suppresses the printing of the execution sequence on the
standard output. It implies -y .
•     -n : The execution sequence is printed but not performed.
•     -c : The minimum IPC resources needed for this configuration are printed.
  • O comando tmshutdown - Usado para fazer o shuts down dos servidores Tuxedo.
tmshutdown [options]

Para saber mais detalhes ler- Comandos Tuxedo

Os Métodos da API em linguagem C do Oracle Tuxedo 12;

API Tuxedo ATMI

ATMI typeC APIComments
Clienttpinit()Allows a client program to join an application.
tpterm()Allows a client to leave the application.
tpchkauth()Checks if authentication is needed.
Communication (request/response)tpcall()Synchronous call to a service.
tpacall()Asynchronous call to a service.
tpgetreply()Gets a reply back for an asynchronous call.
tpcancel()Cancels an asynchronous call to a service.
Communication (conversação)tpconnect()Used to start a conversational connection with a service.
tpdiscon()Disconnects from a conversational connection.
tpsend()Sends a message during a conversation.
tprecv()Receives a message during a conversation.
Communication (eventos)tpnotify()Notifies the client with an unsolicited message.
tpbroadcast()To send an unsolicited message to all clients.
tpsetunsol()Set a callback for an unsolicited message.
tpchkunsol()To check if there is any unsolicited message.
tppost()To post an event message.
tpsubscribe()To subscribe for an event.
tpunsubscribe()Unsubscribes an event.
Precedencia de mensagemtpgprio()Gets the last request's priority.
tpsprio()To set the next request's priority.
Gerenciamento de memóriatpalloc()Creates a message-allocate memory.
tprealloc()Reallocates (resizing) a message.
tpfree()Free message.
tptypes()Gets a message type.
Server/servicetpsvrinit()To initialize a server.
tpsvrdone()To terminate a server.
tpreturn()End of service.
tpforward()Forwards a request to another service.
Gerenciamento Transacional (XA)tpbegin()To start an XA/transaction.
tpcommit()Commits a transaction.
tpabort()Aborts or rolls back a transaction.
tpgetlev()To check the mode of a transaction.
tpsuspend()To suspend a transaction.
tpresume()To resume a suspended transaction.
tmscmt()Controls a commit return.
Gestão de Recursostpopen()Opens a resource manager (RM) to which a caller is linked.
tpclose()To close a resource manager (RM).
Queuingtpenqueue()To push a message in a queue.
tpdequeue()To pick up a message from a queue.
Buffer-relatedtpconvert()Transforms the structures to/from a string.
tpconvmb()Transforms the encoded characters in an input buffer to a named target.
tpexport()Transforms a typed buffer into an exportable, machine-independent string,which embraces encryption seals and digital signatures.
Seguranca e Administraçãotpcryptpw()Administrative request to encrypt an application's password.
tpgetadmkey()To get an administrative authentication key.
tuxgetenv()Returns a value for environment variables set for Tuxedo.
tuxputenv()To dynamically add/change a value to the environment variable.
tpadmcall()Administers may use this to retrieve and update the attributes of a service.
Gerenciamento de errostpstrerror()To capture an error message for a Tuxedo ATMI.
tpstrerrordetail()To capture the detailed error message for a Tuxedo ATMI.
userlog()To write a message (error or warning)from any Tuxedo application to the system's central log.
Dynamic service advertisementtpadvertise()Advertises a service dynamically.
tpunadvertise()Dynamically unadvertises a service name.
API Tuxedo Application to Transaction Monitor Interface (ATMI)

Para saber mais ler - API Tuxedo linguagem C

Estrutura de uma aplicação Oracle Tuxedo 12;

 

1 Estrutura basica de uma codigo cliente simples usando Tuxedo ATMI;

# Incluir as bibliotecas Tuxedo e c com diretiva #include
main(){ 

    Uso do tpalloc() para alocação de memória, TPINIT buffer.
    Pode ser requerido passagem de credenciais user/cltname/password no TPINIT buffer para configurações de segunrança.
    tpinit() para inicialização de uma aplicação cliente Tuxedo.
    Envio de uma requisição para um serviço com tpcall()/tpacall().
    Recebimento de resposta com uso do tpgetreply() quando usado chamada assíncrona tpacall().    
    Processamento da resposta.
    Liberação de uso de uma aplicação tpterm().
}

O camando buildclient deve ser usado para criação de um módulo cliente.

2 Estrutura basica de uma codigo servidor simples usando Tuxedo;

Existem três seções de um servidor;

  •  tpsvrinit () para inicializar o servidor;
  • MyService () para especificar o serviço na lógica de negócios;
  • tpsvrdone () Caso precise fechar quaisquer conexões com o banco de dados ou resource manager. O função padrão pode ser usada caso não haja lógica a ser implementada.
/* Incluir "#include" c,  bibliotecas Tuxedo e header files */
tpsvrinit (int argc, char *argv[])
{
/* Inicialização de recursos para um servidor, conexões com bases de dados etc. */
return(0);
}
 
MyService(TPSVCINFO *rqst)
{
/* Implementar a lógica de serviço */
tpreturn (TPSUCCESS, 0, rqst->data, 0L, 0);
}
tpsvrdone (void)
{
/* Finalização de qualquer conexão de base de dados antes do serviço terminar */
}

O comando buildserver deve ser usado para criação de um módulo Tuxedo servidor.

About the author

Clayton Casteli Atua com desenvolvimento de software, J2EE, C/C++, IBM BPM. É entusiasta de novas tecnologias, principalmente open source. Formado em Engenharia da Computação pela PUCCAMP-SP, Pós-Graduado pela UNICAMP em Engenharia de Software com enfase em SOA e Pós-Graduado em Business Intelligence pelo IBTA.

Be Sociable, Share!

Protected by WP Anti Spam