Exemple : Définition de la propriété d'URL du fournisseur pour sélectionner un autre contexte racine en tant que contexte initial
Chaque serveur contient son propre contexte racine de serveur et lors de l'amorçage vers un serveur, la racine de serveur est le contexte JNDI initial par défaut. La plupart du temps, il s'agit du contexte initial souhaité dans la mesure où les objets système, tels que les interfaces home d'EJB, sont liés à cet endroit. Il existe cependant d'autres contextes racines qui peuvent contenir des liaisons intéressantes. Il est possible de spécifier une URL fournisseur pour sélectionner d'autres contextes de racine.
Exemples illustrant la sélection d'autres contextes de racine ci-dessous :
Sélection du contexte de racine initial avec une URL objet CORBA
Plusieurs clés d'objet enregistrées avec le serveur d'amorce peuvent servir à sélectionner le contexte racine à utiliser comme contexte initial. Pour sélectionner un contexte de racine particulier avec une clé d'objet pour une URL de type objet CORBA, définissez la clé d'objet sur la valeur correspondante. La clé d'objet par défaut est NameService. Avec JNDI, elle retourne le contexte racine de serveur. Le tableau ci-dessous répertorie les différents contextes racines et leur clé d'objet correspondante :
Contexte de racine | Clé d'objet d'une URL de type objet CORBA |
---|---|
Racine de serveur | NameServiceServerRoot |
Racine persistante de cellule | NameServiceCellPersistentRoot |
Racine de cellule | NameServiceCellRoot |
Racine de noeud | NameServiceNodeRoot |
L'exemple suivant montre l'utilisation d'une URL corbaloc avec la clé d'objet définie pour sélectionner le contexte racine persistant de cellule comme contexte initial.
...
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/NameServiceCellPersistentRoot");
Context initialContext = new InitialContext(env);
...
Sélection du contexte de racine initial avec la propriété de racine d'espace de nom
Vous pouvez également sélectionner le contexte racine initial en transmettant le paramètre de propriété de racine d'espace de nom au constructeur InitialContext. En général, le paramètre de clé d'objet précédemment décrit est suffisant. Parfois, un paramètre de propriété est préférable. Par exemple, vous pouvez définir la propriété de contexte racine sur l'appel Java pour rendre la racine de serveur utilisée comme contexte initial transparente vis-à-vis de l'application. Le paramètre de propriété de racine de serveur par défaut est defaultroot, il renvoie le contexte racine de serveur.
Contexte de racine | Valeur de la propriété de la racine d'espace de nom |
---|---|
Racine de serveur | bootstrapserverroot |
Racine persistante de cellule | cellpersistentroot |
Racine de cellule | cellroot |
Racine de noeud | bootstrapnoderoot |
La fabrique de contexte initial ignore la propriété de racine d'espace de nom si l'URL du fournisseur contient une autre clé d'objet que NameService.
L'exemple suivant montre l'utilisation d'une propriété de racine d'espace de nom pour sélectionner le contexte racine persistant de la cellule comme contexte initial. Notez que les constantes disponibles sont utilisées au lieu de coder en dur le nom et la valeur de la propriété.
... import java.util.Hashtable; import javax.naming.Context; import javax.naming.InitialContext; import com.ibm.websphere.naming.PROPS; ... 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"); env.put(PROPS.NAME_SPACE_ROOT, PROPS.NAME_SPACE_ROOT_CELL_PERSISTENT); Context initialContext = new InitialContext(env); ...