Beispiel: EJB-Home-Verzeichnis mit CosNaming durchsuchen

Sie können mit einem Namensserver von WebSphere Application Server über die CORBA-CosNaming-Schnittstelle ein Lookup für ein EJB-Home oder ein anderes CORBA-Objekt durchführen.

Sie können resolve oder resolve_str für den Ausgangskontext bzw. string_to_object für den ORB aufrufen. Sie haben die Möglichkeit, einen qualifizierten Namen verwenden, damit der Name unabhängig vom Namensserver, für den der Lookup durchgeführt wird, aufgelöst wird. Sie können aber auch einen nicht qualifizierten Namen verwenden, der nur über den Serverstammkontext des Namensservers, auf dem die Objektbindung sich tatsächlich befindet, aufgelöst werden kann. (Der qualifizierte Name geht den Namespace des Verbundsystems bis zum angegebenen Serverstammkontext durch.)

Qualifizierter und nicht qualifizierter Name

Jeder Anwendungsserver enthält einen Namensserver. Systemartefakte, wie z. B. EJB-Homes, werden auf diesem Namensserver gebunden. Die verschiedenen Namensserver werden durch eine Struktur des System-Namespace eingebunden. Es wird empfohlen, zum Lokalisieren von Objekten auf verschiedenen Servern einen qualifizierten Namen zu verwenden.

Ein qualifizierter Name kann topologiebasiert sein. Die Topologie besteht aus einem Cluster bzw. einem Einzelserver und dem Knoten, der das Objekt enthält.

Sie können feste qualifizierte Namen für Objekte definieren. Mit qualifizierten Namen können Sie Objekte, die sich auf verschiedenen Servern befinden, über denselben Ausgangskontext lokalisieren, wenn Sie die Struktur des System-Namespace durchgehen. Alternativ dazu können Sie einen nicht qualifizierten Namen verwenden, Sie müssen jedoch beachten, dass ein nicht qualifizierter Name nur anhand des Namensservers, der dem Anwendungsserver des Objekts zugeordnet ist, aufgelöst werden kann.

CosNaming.resolve (und resolve_str) bzw. ORB.string_to_object

Wenn Sie einen Ausgangskontext über einen Namensserver in einer Zelle von WebSphere Application Server verwenden, können Sie alle CORBA-Objekte mit einem qualifizierten Namen lokalisieren. Sie benötigen zusätzliche Host- und Portangaben für den Namensserver des Zielobjekts.

Alternativ dazu können Sie ein Objekt aufrufen, indem Sie string_to_object auf dem ORB aufrufen und dabei einen corbaname-URL übergeben. Normalerweise wird ein IIOP-URL angegeben, so dass die Bootstrapadresse für einen Ausgangskontext im URL enthalten sein muss. Sie können einen qualifizierten oder einen nicht qualifizierten Namen in Form einer Zeichenfolge verwenden, ein nicht qualifizierter Name wird jedoch nur aufgelöst, wenn der Ausgangskontext von dem Namensserver stammt, auf dem das Objekt gebunden ist.

Die folgenden Beispiele veranschaulichen CosNaming-Auflösungsoperationen, die qualifizierte topologiebasierte Lookup-Namen und einen nicht qualifizierten Lookup-Namen verwenden.

CosNaming-Auflösungsoperation, die einen qualifizierten Namen verwendet

Der topologiebasierte qualifizierte Name für ein Objekt ist davon abhängig, ob das Objekt auf einem Einzelserver oder in einem Server-Cluster gebunden wird. Es folgen Beispiele für beide Fälle.

Einzelserver

Das folgende Beispiel veranschaulicht den Lookup eines EJB-Home, das auf einem Einzelserver ausgeführt wird. Die Enterprise-Bean, für die ein Lookup durchgeführt wird, wird auf dem Server MyServer, der sich auf dem Knoten Node1 befindet, ausgeführt.

// Ausgangskontext wie oben dargestellt abrufen
// Nachfolgendes Format für Lookup-Namen verwenden, unabhängig davon, welcher
// Server in der Zelle zum Abrufen des Ausgangskontextes verwendet wird.
...
// Die Home-Schnittstelle mit dem Namen, unter dem das EJB-Home gebunden ist, lokalisieren.
org.omg.CORBA.Object ejbHome = initialContext.resolve_str(
  "cell/nodes/Node1/servers/MyServer/mycompany/accounting/AccountEJB");
accountHome = (AccountHome)javax.rmi.PortableRemoteObject.narrow(ejbHome, AccountHome.class);

Server-Cluster

Das folgende Beispiel veranschaulicht den Lookup eines EJB-Home, das in einem Cluster ausgeführt wird. Die Enterprise-Bean, für die ein Lookup durchgeführt wird, wird im Cluster Cluster1 ausgeführt. Der Name kann aufgelöst werden, wenn eines der Cluster-Member ausgeführt wird.

// Ausgangskontext wie oben dargestellt abrufen
// Nachfolgendes Format für Lookup-Namen verwenden, unabhängig davon, welcher
// Server in der Zelle zum Abrufen des Ausgangskontextes verwendet wird.
...
// Die Home-Schnittstelle mit dem Namen, unter dem das EJB-Home gebunden ist, lokalisieren.
org.omg.CORBA.Object ejbHome = initialContext.resolve_str(
   "cell/clusters/Cluster1/mycompany/accounting/AccountEJB");
accountHome = (AccountHome)javax.rmi.PortableRemoteObject.narrow(ejbHome, AccountHome.class);

ORB-Operation string_to_object, die einen qualifizierten Namen in Form einer Zeichenfolge verwendet

Wenn die Auflösungsoperation auf dem Namensserver ausgeführt wird, auf dem sich das Objekt befindet, ist es nicht erforderlich, den Namespace durchzugehen, und Sie können einen nicht qualifizierten Lookup-Namen verwenden. Beachten Sie, dass dieser Name auf anderen Namensservern nicht aufgelöst wird. Wenn ein nicht qualifizierter Name angegeben wird, muss der Objektschlüssel NameServiceServerRoot sein, damit der richtige Ausgangskontext ausgewählt wird. Wird ein qualifizierter Name angegeben, können Sie den Standardschlüssel von NameService verwenden.

Das folgende Beispiel veranschaulicht die Lookup-Operation für eine EJB-Home-Schnittstelle. Die Enterprise-Bean, für die ein Lookup durchgeführt wird, wird auf dem Namensserver, der auf Host myHost an Port 2809 ausgeführt wird, gebunden. Achten Sie auf den Objektschlüssel NameServiceServerRoot.

// orb bezeichnet eine vorhandene ORB-Instanz
...
// Die Home-Schnittstelle mit dem Namen, unter dem das EJB-Home gebunden ist, lokalisieren.
org.omg.CORBA.Object ejbHome = orb.string_to_object(
    "corbaname:iiop:myHost:2809/NameServiceServerRoot#mycompany/accounting");
accountHome = (AccountHome)javax.rmi.PortableRemoteObject.narrow(ejbHome, AccountHome.class);

Symbol, das den Typ des Artikels anzeigt. Referenzartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rnam_example_corba2
Dateiname:rnam_example_corba2.html