Interoperabilitätsprobleme bei JNDI
Sie müssen zusätzliche Schritte ausführen, wenn Ihre Programme mit produktfremden JNDI-Clients interagieren und MQSeries-Ressourcen an einen Namespace gebunden werden sollen.
EJB-Clients, die in einer anderen Umgebung als WebSphere Application Server ausgeführt werden und auf EJB-Anwendungen zugreifen, die in Produktservern ausgeführt werden
Wenn eine EJB-Anwendung, die in WebSphere Application Server ausgeführt wird, von einem produktfremden EJB-Client aufgerufen wird, wird angenommen, dass die JNDI-Ausgangskontextfactory eine produktfremde Implementierung ist. In diesem Fall ist der Standardausgangskontext der Zellenstamm. Wenn der verwendete JNDI-Service-Provider CORBA-Objekt-URLs unterstützt, kann das corbaname-Format zum Lokalisieren des EJB-Home verwendet werden.
Die Angabe des Namens in Form einer Zeichenfolge ist davon abhängig, ob das Objekt auf einem Einzelserver oder in einem einzelnen Cluster installiert wird.
- Einzelserver
- Der folgende URL hat den Bootstrap-Host myHost, den Port 2809 und eine Enterprise-Bean, die im Server
server1 auf dem Knoten node1 installiert ist und in diesem Server unter dem Namen myEJB gebunden ist:
initialContext.lookup( "corbaname:iiop:myHost:2809#cell/nodes/node1/servers/server1/myEJB");
- Server-Cluster
- Der folgende URL hat den Bootstrap-Host myHost, den Port 2809 und eine Enterprise-Bean, die in einem Server-Cluster mit dem Namen
myCluster installiert ist und in diesem Cluster unter dem Namen myEJB gebunden ist:
initialContext.lookup( "corbaname:iiop:myHost:2809#cell/clusters/myCluster/myEJB");
Die beschriebene Lookup-Operation kann mit jedem in derselben Zelle konfigurierten Bootstrap-Host und Bootstrap-Port für einen Namensserver ausgeführt werden.
Die Lookup-Operation funktioniert auch, wenn der Bootstrap-Host und der Port zu einem Member des Cluster selbst gehören. Wenn Sie einen Single Point of Failure vermeiden möchten, können der Bootstrap-Host und Bootstrap-Port für jedes Cluster-Member wie folgt im URL aufgelistet werden:
initialContext.lookup( "corbaname:iiop:host1:9810,:host2:9810#cell/clusters/myCluster/myEJB");
Das Namenspräfix cell/clusters/myCluster/ ist nicht erforderlich, wenn der Bootvorgang im Cluster selbst durchgeführt wird, kann jedoch verwendet werden. Das Präfix ist jedoch erforderlich, wenn Enterprise-Beans in anderen Clustern lokalisiert werden sollen. Namensbindungen unter dem Kontext clusters werden auf dem Namensserver implementiert, um während des Lookup eine Auflösung zum Serverstamm eines aktiven Cluster-Member zu ermöglichen und somit einen Single Point of Failure zu vermeiden.
- Ohne Unterstützung für CORBA-Objekt-URLs
- Wenn der verwendete JNDI-Standardausgangskontext keine CORBA-Objekt-URLs
unterstützt, kann der Ausgangskontext vom Server abgerufen und die
Lookup-Operation wie folgt für den Ausgangskontext ausgeführt werden:
Hashtable env = new Hashtable(); env.put(CONTEXT.PROVIDER_URL, "iiop://myHost:2809"); Context ic = new InitialContext(env); Object o = ic.lookup("cell/clusters/myCluster/myEJB");
Ressourcen von MQSeries 5.2 binden
In den Releases vor WebSphere Application Server Version 5.0 konnte das MQSeries-Tool jmsadmin verwendet werden, um Ressourcen an den Namespace zu binden. Bei der Verwendung für einen Namespace in WebSphere Application Server wird die Ressource in einer Übergangspartition im Namespace gebunden und bleibt nur für die Dauer des Serverprozesses gespeichert. Verwenden Sie für die Bindung der MQSeries-Ressourcen anstelle des Tools "jmsadmin" die Administrationskonsole. Klicken Sie in der Navigationsstruktur der Konsole auf Ressourcen.