Exemple : Obtention d'un contexte initial en définissant la propriété d'URL du fournisseur

En général, les clients JNDI (Java™ Naming and Directory Interface) doivent considérer que l'environnement correct est déjà configuré, de sorte qu'il n'est pas nécessaire de définir explicitement les valeurs des propriétés JNDI et de les transmettre au constructeur InitialContext. Cependant, un client JNDI peut avoir besoin d'accéder à un autre espace de nom que celui identifié dans son environnement. Dans ce cas, il est nécessaire de définir explicitement la propriété java.naming.provider.url (URL de fournisseur) utilisée par le constructeur InitialContext. Une URL de fournisseur contient des informations sur le serveur d'amorce que la fabrique de contextes initiaux peut utiliser pour obtenir un contexte initial. Toute valeur de propriété transmise directement au constructeur InitialContext est prioritaire sur les paramètres de ces mêmes propriétés trouvées ailleurs dans l'environnement.

Vous pouvez utiliser deux formes d'URL de fournisseur avec la fabrique de contexte initial WebSphere Application Server :
  • URL objet CORBA
  • URL IIOP

Les URL objet CORBA sont plus flexibles que les URL IIOP et l'utilisation de ce format d'URL est recommandé. Les URL objet CORBA font partie de la spécification de l'OMG relative à l'affectation de noms interopérables CosNaming. Une URL corbaname, par exemple, peut inclure des informations sur le contexte initial et le nom de la recherche et être utilisée comme nom de recherche sans qu'il soit nécessaire d'obtenir explicitement un autre contexte initial. Les URL IIOP correspondent au format JNDI hérité, mais elles sont toujours prises en charge par la fabrique de contexte initial WebSphere Application Server.

Les exemples suivants illustrent l'utilisation de ces URL.

Utilisation d'une URL objet CORBA

Cet exemple montre une URL objet 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:monhote.monentreprise.com:2809");
Context initialContext = new InitialContext(env);
...

Utilisation d'une URL objet CORBA avec plusieurs adresses de serveurs de noms

Les URL d'objets CORBA peuvent contenir plusieurs adresses d'amorce. Vous pouvez utiliser cette caractéristique lorsque vous tentez d'obtenir un contexte initial d'un cluster de serveurs. Vous pouvez spécifier les adresses d'amorce pour tous les serveurs du cluster dans l'URL. L'opération ne réussit que si au moins un des serveurs est en cours de fonctionnement, évitant un point de défaillance unique. Il n'existe par d'ordre particulier pour le traitement de la liste d'adresses. Par exemple, la seconde adresse d'amorce peut être utilisée pour obtenir le contexte initial même si le serveur de la première adresse d'amorce de la liste est disponible.

Les URL de fournisseurs d'adresses multiples résolues en serveurs non z/OS ne doivent pas comporter les adresses d'amorce d'autres processus agent. Cela est dû au fait que l'amorçage vers un agent de noeud renvoie un contexte initial non compatible avec WLM. Il en résulte que WLM n'est pas utilisé. En revanche, les adresses URL ne doivent contenir que les adresses d'amorce des membres du même cluster de sorte que le contexte initial soit compatible avec WLM. Si les adresses URL contiennent les adresses d'amorce de plusieurs clusters, un comportement incorrect peut en résulter. Il se peut qu'un nom donné ne soit pas résolu ou que sa résolution donne lieu au même objet sur tous les clusters. Lorsqu'il s'agit de serveurs exécutés sur le système d'exploitation z/OS, les URL peuvent contenir des adresses d'amorce pour les processus d'agent de noeud, car sur z/OS, un agent de noeud retourne un contexte initial WLM.

Voici un exemple d'URL corbaloc avec plusieurs adresses.

...
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");
// Tous les serveurs de l'URL de fournisseur ci-dessous sont membres
// du même cluster.
env.put(Context.PROVIDER_URL,
     "corbaloc::myhost1:9810,:myhost1:9811,:myhost2:9810");
Context initialContext = new InitialContext(env);
...

Utilisation d'une URL objet CORBA à partir d'une implémentation JNDI non WebSphere Application Server

Les fabriques de contexte initial pour des implémentations de module d'extension JNDI CosNaming autres que des fab riques WebSphere Application Server obtiennent généralement un contexte initial à l'aide de la clé d'objet NameService. Lorsque vous utilisez une telle fabrique de contexte pour obtenir un contexte initial à partir d'un serveur de noms WebSphere Application Server, le contexte initial est le contexte racine de la cellule. Comme les artefacts, tels que les beans gérés par message hébergés associés à un serveur, sont liés sous le contexte racine serveur du serveur, les noms utilisés dans les opérations JNDI doivent être qualifiés. Si vous souhaitez utiliser des noms relatifs, veillez à ce que votre contexte initial soit le contexte racine du serveur sous lequel l'objet cible est lié. Pour que le contexte racine du serveur soit le contexte initial, spécifiez une URL de fournisseur corbaloc avec une clé d'objet NameServiceServerRoot.

Cet exemple montre une URL de type objet CORBA dans une mise en oeuvre JNDI non WebSphere Application Server. Il suppose la prise en charge complète des URL objet CORBA par la mise en oeuvre JNDI non WebSphere Application Server. La clé d'objet NameServiceServerRoot est spécifiée de façon à ce que le contexte initial soit le contexte racine de serveur du serveur spécifié.

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

Si des noms qualifiés sont utilisés, vous pouvez utiliser la clé par défaut NameService.

Utilisation d'une URL IIOP

L'URL de type IIOP est un format existant qui n'est pas aussi flexible que les URL de type objet CORBA. Les URL de ce type sont cependant toujours supportées. L'exemple suivant montre une URL de type IIOP comme URL de fournisseur.

...
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://monhote.monentreprise.com:2809");
Context initialContext = new InitialContext(env);
...

Icône indiquant le type de rubrique Rubrique de référence



Icône d'horodatage Dernière mise à jour: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rnam_example_prop2
Nom du fichier : rnam_example_prop2.html