Dicas de Programação do Lado do Cliente para o Serviço Object Request Broker

Cada troca de pedido e resposta de IIOP (Internet InterORB Protocol) consiste em um ORB do lado do cliente e do lado do servidor. É importante que todo aplicativo que utiliza IIOP seja programado corretamente para comunicação com o ORB (Object Request Broker) do lado do cliente.

As dicas a seguir ajudarão a garantir que um aplicativo que utiliza IIOP para controlar as trocas de pedido e resposta seja programado corretamente para se comunicar com o ORB (Object Request Broker) do lado do cliente.

Resolução de Referências Iniciais a Serviços

Aplicativos clientes podem utilizar as propriedades ORBInitRef e ORBDefaultInitRef para configurar o local da rede que o serviço ORB utiliza para localizar um serviço de nomes, por exemplo. Quando definidas, essas propriedades são incluídas nos parâmetros utilizados para inicializar o ORB, conforme ilustrado no exemplo a seguir:
org.omg.CORBA.ORB.init(java.lang.String[] args, 
                       java.util.Properties props)

É possível definir essas propriedades no código do cliente ou por argumento da linha de comandos. É possível especificar mais de uma localização de serviço, utilizando várias configurações da propriedade ORBInitRef (uma para cada serviço), mas somente um único valor para ORBDefaultInitRef pode ser especificado. Para obter informações adicionais sobre as duas propriedades e a ordem de precedência que o ORB utiliza para localizar serviços, leia a especificação CORBA/IIOP.

Para definição no código do cliente, essas propriedades são com.ibm.CORBA.ORBInitRef.service_name e com.ibm.CORBA.ORBDefaultInitRef, respectivamente. Por exemplo, para especificar que o serviço de nomes (NameService) está localizado em sample.server.com na porta 2809, defina a propriedade com.ibm.CORBA.ORBInitRef.NameService como corbaloc::sample.server.com:2809/NameService.

Para definição por argumento da linha de comandos, essas propriedades são -ORBInitRef e -ORBDefaultInitRef, respectivamente. Para localizar o mesmo serviço de nomes especificado anteriormente, utilize o seguinte comando Java:

Depois que essas propriedades tiverem sido definidas para serviços suportados pelo ORB, os aplicativos Java Platform, Enterprise Edition (Java EE) poderão chamar a função resolve_initial_references no ORB, conforme definido na especificação CORBA/IIOP, para obter a referência inicial para um determinado serviço.

API Preferencial para Obter uma Instância do ORB

Para aplicativos Java EE, você pode utilizar qualquer uma das seguintes abordagens. Entretanto, é altamente recomendável utilizar a abordagem JNDI (Java Naming and Directory Interface) para assegurar que a mesma instância ORB seja utilizada em todo o aplicativo cliente; evite inconsistências não planejadas que possam ocorrer quando diferentes instâncias ORB são utilizadas.

Abordagem JNDI: Para aplicativos Java EE (incluindo enterprise beans, clientes e servlets Java EE), você pode obter uma instância ORB criando um objeto JNDI InitialContext e consultando o ORB sob o nome java:comp/ORB, como ilustrado no seguinte exemplo:
javax.naming.Context ctx = new javax.naming.InitialContext();
org.omg.CORBA.ORB orb = 
   (org.omg.CORBA.ORB)javax.rmi.PortableRemoteObject.narrow(ctx.lookup("java:comp/ORB"), 
                                                            org.omg.CORBA.ORB.class);
A instância ORB obtida utilizando JNDI é um objeto singleton, compartilhado por todos os componentes Java EE que estão em execução no mesmo processo da JVM (Java Virtual Machine).
Evitar Problemas Evitar Problemas: É necessário usar a abordagem JNDI se você quiser obter vantagem da funcionalidade WLM e do failover de cluster no aplicativo. Para obter informações sobre como obter um InitialContext a partir de um cluster de servidor, consulte o exemplo sobre o uso do URL do objeto CORBA com vários endereços de servidores de nomes, localizado no tópico sobre como obter um contexto inicial ao configurar a propriedade de URL do provedor.gotcha
Abordagem CORBA: como os aplicativos cliente thin não são executados em um contêiner Java EE, eles não podem utilizar interfaces JNDI para consultar o ORB. Neste caso, é possível obter uma instância do ORB utilizando interfaces de programação CORBA, da seguinte maneira:
java.util.Properties props = new java.util.Properties();
java.lang.String[] args = new java.lang.String[0];
org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(args, props);

Em contraste com a abordagem de JNDI, a especificação CORBA exige que uma nova instância do ORB seja criada cada vez que o método ORB.init for chamado. Se for necessário alterar as configurações padrão do ORB, você poderá incluir as configurações de propriedade do ORB no objeto Propriedades que é transmitido na chamada de método ORB.init.

A utilização do método com.ibm.ejs.oa.EJSORB.getORBinstance, suportada em releases anteriores deste produto está obsoleta.

Restrições de API ao compartilhamento de uma instância ORB entre componentes de aplicativo Java EE

Por razões de desempenho, muitas vezes faz sentido compartilhar uma única instância ORB entre componentes em um aplicativo Java EE. Conforme necessário pela Especificação Java EE Versão 1.3, todos os contêineres da Web e EJB fornecem uma instância ORB no namespace JNDI como java:comp/ORB. Cada contêiner pode compartilhar essa instância entre componentes do aplicativo mas isso não é requerido. Para isolamento apropriado entre componentes do aplicativo, o código do aplicativo deve respeitar as seguintes restrições:
  • Não chamar os métodos shutdown ou destroy do ORB
  • Não chame o método register_value_factory ou unregister_value_factory do org.omg.CORBA_2_3.ORB

Além disso, não compartilhe uma instância ORB entre componentes de aplicativo em diferentes aplicativos Java EE.

Uso Obrigatório de rmic e idlj Enviados com o IBM Developer Kit

O JRE (Java Runtime Environment) utilizado por esse produto inclui as ferramentas rmic e idlj. Utilize as ferramentas para gerar ligações da linguagem Java para o protocolo CORBA/IIOP.

Durante a instalação do produto, as ferramentas são instaladas no diretório app_server_root/java/ibm_bin. As versões dessas ferramentas incluídas nos kits de desenvolvimento Java no diretório $JAVA_HOME/bin que não sejam do IBM Developer Kit instalado com este produto são incompatíveis com este produto.

Ao instalar este produto, o diretório app_server_root/java/ibm_bin é incluído na ordem de procura de $PATH para permitir o uso dos scripts rmic e idlj fornecidos pela IBM. Como os scripts estão no diretório app_server_root/java/ibm_bin e não no diretório app_server_root/java/bin padrão do JRE, é improvável que você os sobrescreva ao aplicar manutenção a um JRE não fornecido pela IBM.

Além das ferramentas rmic e idlj, o JRE também inclui arquivos de IDL (Interface Definition Language). Os arquivos são baseados nos definidos pelo Object Management Group (OMG) e podem ser utilizados por aplicativos que necessitem de uma definição IDL de interfaces selecionadas de ORB. Os arquivos são colocados no diretório app_server_root/java/ibm_lib.

Antes de utilizar a ferramenta rmic ou idlj, certifique-se de que o diretório app_server_root/java/ibm_bin esteja incluído na ordem de procura da variável PATH apropriada no ambiente. Se seu aplicativo utilizar arquivos IDL no diretório app_server_root/java/ibm_bin, também certifique-se de que o diretório esteja incluído na variável PATH.


Ícone que indica o tipo de tópico Tópico de Referência



Ícone de registro de data e hora Última atualização: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rorb_orbprog
Nome do arquivo: rorb_orbprog.html