Exemplo: Obtendo um Contexto Inicial Definindo a Propriedade de Provedor de URL

Em geral, clientes JNDI (Java™ Naming and Directory Interface) devem assumir que o ambiente correto já está configurado, não sendo necessário então definir explicitamente os valores de propriedade e transmiti-los ao construtor InitialContext. Entretanto, um cliente JNDI talvez precise acessar um espaço de nomes diferente do identificado em seu ambiente. Neste caso, é necessário definir explicitamente a propriedade java.naming.provider.url (URL do provedor) utilizada pelo construtor InitialContext. Um URL do provedor contém informações do servidor de inicialização que a fábrica de contexto inicial pode utilizar para obter um contexto inicial. Os valores de propriedades passados diretamente para o construtor InitialContext têm prioridade sobre as definições dessas mesmas propriedades encontradas em outro lugar no ambiente.

É possível utilizar duas formas de URL de provedor diferentes com o depósito de informações de contexto inicial do WebSphere Application Server:
  • Uma URL de objeto CORBA
  • Uma URL de IIOP

Os URLs de objeto CORBA são mais flexíveis que os URLs de IIOP e são o formato de URL recomendado para utilização. Os URLs de objetos CORBA fazem parte da OMG CosNaming Interoperable Naming Specification. Um URL corbaname, por exemplo, pode incluir informações de contexto inicial e de nome de consulta e pode ser utilizado como um nome de consulta sem a necessidade de obter explicitamente outro contexto inicial. As URLs de IIOP são o formato JNDI legado, mas ainda são suportadas pelo depósito de informações de contexto inicial do WebSphere Application Server.

Os exemplos a seguir ilustram o uso desses URLs.

Utilizando uma URL de Objeto CORBA

Este exemplo mostra um URL de objeto CORBA.

...
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.InitialContext;
...
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,
     "com.ibm.websphere.naming.WsnInitialContextFactory");
env.put(Context.PROVIDER_URL, "corbaloc:iiop:myhost.mycompany.com:2809");
Context initialContext = new InitialContext(env);
...

Utilizando um URL de Objeto CORBA com Vários Endereços de Servidores de Nomes

Os URLs de objetos CORBA podem conter mais de um endereço de bootstrap. É possível utilizar esse recurso ao tentar obter um contexto inicial de um cluster de servidores. É possível especificar na URL os endereços de bootstrap para todos os servidores no cluster. A operação obterá êxito se pelo menos um dos servidores estiver em execução, eliminando um ponto único de falha. Não existe garantia de uma ordem específica na qual a lista de endereços será processada. Por exemplo, o segundo endereço de bootstrap pode ser utilizado para obter o contexto inicial mesmo que o servidor no primeiro endereço de bootstrap na lista esteja disponível.

URLs de um provedor de vários endereços que são resolvidos para servidores em sistemas não z/OS não podem conter endereços de auto-inicialização para processos do agente de nó. Isso ocorre porque a autoinicialização em um agente do nó retorna um contexto inicial não ativado para WLM. Como resultado, o WLM não é usado. Ao invés disso, as URLs devem conter apenas endereços de autoinicialização dos membros do mesmo cluster de forma que o contexto inicial seja ativado para WLM. Se as URLs contiverem os endereços de autoinicialização de vários clusters, poderá resultar em comportamento incorreto. Um nome dado pode não resolver ou resolver para o mesmo objeto em todos os clusters. Ao resolver aos servidores em execução no sistema operacional z/OS, as URLs poderão conter os endereços de inicialização para os processos do agente do nó, porque, no z/OS, um agente do nó retorna um contexto inicial ativado por não WLM.

Um exemplo de um URL corbaloc com vários endereços é mostrado a seguir.

...
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.InitialContext;
...
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,
     "com.ibm.websphere.naming.WsnInitialContextFactory");
// Todos os servidores na URL de provedor a seguir são membros
//  do mesmo cluster.
env.put(Context.PROVIDER_URL,
     "corbaloc::myhost1:9810,:myhost1:9811,:myhost2:9810");
Context initialContext = new InitialContext(env);
...

Utilizando uma URL de Objeto CORBA de uma Implementação JNDI Não-WebSphere Application Server

Os depósitos de informações de contexto inicial para implementações de plug-in JNDI CosNaming diferentes do depósito de informações de contexto inicial do WebSphere Application Server muito provavelmente obtêm um contexto inicial utilizando a chave de objeto NameService. Ao utilizar tal depósito de informações de contexto para obter um contexto inicial de um servidor de nomes do WebSphere Application Server, o contexto inicial é o contexto raiz da célula. Como os artefatos do sistema como EJB homes associados com um servidor estão vinculados sob o contexto raiz do servidor, os nomes usados em operações JNDI devem ser qualificados. Se quiser utilizar nomes relativos, certifique-se de que seu contexto inicial seja o contexto raiz de servidor sob o qual o objeto de destino está ligado. Para tornar o contexto raiz do servidor o contexto inicial, especifique uma URL de provedor corbaloc com uma chave de objeto de NameServiceServerRoot.

Esse exemplo mostra uma URL de tipo de objeto CORBA de uma implementação JNDI não WebSphere Application Server. Esse exemplo supõe suporte total de URL de objeto CORBA pela implementação JNDI não WebSphere Application Server. A chave de objeto de NameServiceServerRoot é especificada de modo que o contexto inicial será o contexto raiz de servidor do servidor especificado.

...
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.InitialContext;
...
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,
      "com.somecompany.naming.TheirInitialContextFactory");
env.put(Context.PROVIDER_URL,
      "corbaname:iiop:myhost.mycompany.com:9810/NameServiceServerRoot");
Context initialContext = new InitialContext(env);
...

Se nomes qualificados forem utilizados, será possível utilizar a chave padrão de NameService.

Utilizando um URL de IIOP

O tipo IIOP de URL é um formato legado que não é tão flexível quanto URLs de objeto CORBA. Contudo, URLs desse tipo ainda são suportados. O exemplo a seguir mostra um URL do tipo IIOP como o URL de provedor.

...
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.InitialContext;
...
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,
     "com.ibm.websphere.naming.WsnInitialContextFactory");
env.put(Context.PROVIDER_URL, "iiop://myhost.mycompany.com:2809");
Context initialContext = new InitialContext(env);
...

Í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=rnam_example_prop2
Nome do arquivo: rnam_example_prop2.html