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
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.
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).
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
- 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.