Tipps zur Programmierung von Clients für den ORB-Service

An jedem Austausch von IIOP-Anforderungen und -Antworten sind ein ORB auf Clientseite und ein ORB auf Serverseite beteiligt. Es ist wichtig, dass eine Anwendung, die IIOP verwendet, ordnungsgemäß für die Kommunikation mit dem clientseitigen Object Request Broker (ORB) programmiert ist.

Die folgenden Tipps sollen Ihnen helfen sicherzustellen, dass eine Anwendung, die IIOP für die Bearbeitung des Anforderung/Antwort-Austauschs verwendet, für die Kommunikation mit dem clientseitigen Object Request Broker (ORB) ordnungsgemäß programmiert ist.

Auflösung von Ausgangsreferenzen auf Services

Clientanwendungen können mit den Eigenschaften "ORBInitRef" und "ORBDefaultInitRef" das Netzverzeichnis, das der ORB-Service zum Lokalisieren eines Service, z. B. eines Namensservice, verwendet, konfigurieren. Wenn diese Eigenschaften gesetzt sind, werden sie in den Parametern wie folgt angegeben, um den ORB zu initialisieren:
org.omg.CORBA.ORB.init(java.lang.String[] args, 
                       java.util.Properties props)

Sie können diese Eigenschaften im Clientcode oder über einen Befehlszeilenparameter konfigurieren. Sie können mehrere Serviceverzeichnisse angeben, indem Sie mehrere Einstellungen der Eigenschaft "ORBInitRef" (eine Einstellung pro Service) verwenden, es kann jedoch nur ein einziger Wert für ORBDefaultInitRef angegeben werden. Weitere Informationen zu den beiden Eigenschaften und zur Reihenfolge, in der der ORB diese Eigenschaften verwendet, um Services zu suchen, finden Sie in der CORBA/IIOP-Spezifikation.

Für die Konfiguration im Clientcode lautet diese Eigenschaft "com.ibm.CORBA.ORBInitRef.Servicename" bzw. "com.ibm.CORBA.ORBDefaultInitRef". Wenn Sie z. B. angeben möchten, dass der Namensservice (NameService) sich unter sample.server.com an Port 2809 befindet, setzen Sie die Eigenschaft "com.ibm.CORBA.ORBInitRef.NameService" auf CORBAloc::sample.server.com:2809/NameService.

Für die Konfiguration nach Befehlszeilenargument lautet diese Eigenschaft "-ORBInitRef" bzw. "-ORBDefaultInitRef". Möchten Sie denselben, zuvor angegebenen Namensservice lokalisieren, verwenden Sie den folgenden Java-Befehl:

Nachdem diese Eigenschaften für die vom ORB unterstützten Services gesetzt wurden, können Java EE-Anwendungen (Java Platform, Enterprise Edition) die Funktion resolve_initial_references im ORB gemäß CORBA/IIOP-Spezifikation aufrufen, um die Ausgangsreferenz auf einen bestimmten Service abzurufen.

Bevorzugte API zum Abrufen einer ORB-Instanz

Für Java EE-Anwendungen können Sie eine der folgenden Methoden verwenden. Es wird jedoch dringend empfohlen, dass Sie die JNDI-Methode (Java Naming and Directory) verwenden, um sicherzustellen, dass dieselbe ORB-Instanz in der gesamten Clientanwendung verwendet wird. Sie vermeiden die unbeabsichtigten Inkonsistenzen, die bei Verwendung verschiedener ORB-Instanzen auftreten können.

JNDI-Methode: Für Java EE-Anwendungen (einschließlich Enterprise-Beans, Java EE-Clients und Servlets) können Sie eine ORB-Instanz abrufen, indem Sie wie folgt einen JNDI-InitialContext-Objekt erstellen und den ORB unter dem Namen java:comp/ORB lokalisieren:
javax.naming.Context ctx = new javax.naming.InitialContext();
org.omg.CORBA.ORB orb = 
   (org.omg.CORBA.ORB)javax.rmi.PortableRemoteObject.narrow(ctx.lookup("java:comp/ORB"), 
                                                            org.omg.CORBA.ORB.class);
Die mit JNDI abgerufene ORB-Instanz ist ein Singleton-Objekt, das von allen Java EE-Komponenten, die in demselben JVM-Prozess ausgeführt werden, gemeinsam genutzt wird.
Fehler vermeiden Fehler vermeiden: Sie müssen den JNDI-Ansatz verwenden, wenn Sie die WLM-Funktionalität und Cluster-Failover in der Anwendung verwenden möchten. Weitere Informationen zum Abrufen eines InitialContext-Objekts aus einem Servercluster finden Sie im Artikel mit dem Beispiel zur Verwendung eines CORBA-Objekt-URL mit mehreren Namensserveradressen, d. h. dem Artikel zum Abrufen eines Anfangskontextes durch Festlegung der Eigenschaft "Provider-URL".gotcha
CORBA-Methode: Da Thin-Clientanwendungen nicht in einem Java EE-Container ausgeführt werden, können sie zum Lokalisieren des ORB keine JNDI-Schnittstellen verwenden. In diesem Fall können Sie eine ORB-Instanz mit CORBA-Programmierschnittstellen wie folgt abrufen:
java.util.Properties props = new java.util.Properties();
java.lang.String[] args = new java.lang.String[0];
org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(args, props);

Im Gegensatz zur JNDI-Methode verlangt die CORBA-Spezifikation, dass bei jedem Aufrufen der Methode ORB.init eine neue ORB-Instanz erstellt wird. Wenn Sie die Standardeinstellungen für den ORB ändern müssen, können Sie dem Properties-Objekt, das im Methodenaufruf "ORB.init" übergeben wird, ORB-Eigenschaftseinstellungen hinzufügen.

Die Methode "com.ibm.ejs.oa.EJSORB.getORBinstance", die in früheren Releases dieses Produkts verwendet wurde, ist veraltet.

API-Einschränkungen bei der gemeinsamen Verwendung einer ORB-Instanz durch Komponenten einer Java EE-Anwendung

Unter dem Gesichtspunkt der Leistung macht es oft Sinn, dass Komponenten einer Java EE-Anwendung eine einzige ORB-Instanz gemeinsam nutzen. Wie in der Java EE-Spezifikation Version 1.3 definiert, stellen alle web und EJB-Container eine ORB-Instanz im JNDI-Namespace bereit, wie z. B. java:comp/ORB. Jeder Container kann diese Instanz gemeinsam mit anderen Anwendungskomponenten benutzen, dies ist jedoch nicht erforderlich. Damit Anwendungskomponenten ordnungsgemäß isoliert werden können, gelten für Anwendungscode die folgenden Einschränkungen:
  • ORB-Methoden shutdown und destroy nicht aufrufen
  • org.omg.CORBA_2_3.ORB-Methoden register_value_factory und unregister_value_factory nicht aufrufen

Außerdem darf eine ORB-Instanz von Anwendungskomponenten in verschiedenen Java EE-Anwendungen nicht gemeinsam genutzt werden.

Verwendung von rmic und idlj (im IBM Developer Kit enthalten) erforderlich

Die Java-Laufzeitumgebung (Java Runtime Environment, JRE), die von diesem Produkt verwendet wird, umfasst die Tools rmic und idlj. Die Tools werden verwendet, um programmiersprachenbezogene Java-Bindungen für das CORBA/IIOP-Protokoll zu generieren.

Während der Produktinstallation werden die Tools im Verzeichnis Stammverzeichnis_des_Anwendungsservers/java/ibm_bin installiert. Versionen dieser Tools, die in JDKs (Java Development Kits) im Verzeichnis $JAVA_HOME/bin und nicht in dem IBM Developer Kit, das mit diesem Produkt installiert wird, enthalten sind, sind mit diesem Produkt inkompatibel.

Wenn Sie dieses Produkt installieren, ist das Verzeichnis Stammverzeichnis_des_Anwendungsservers/java/ibm_bin in der Suchreihenfolge von $PATH angegeben, um die Verwendung der IBM Scripts rmic und idlj zu aktivieren. Da die Scripts im Verzeichnis Stammverzeichnis_des_Anwendungsservers/java/ibm_bin und nicht im JRE-Standardverzeichnis Stammverzeichnis_des_Anwendungsservers/java/bin gespeichert sind, ist es unwahrscheinlich, dass Sie sie beim Installieren eines Wartungspakets für eine nicht von IBM bereitgestellte JRE überschreiben können.

Außer den Tools rmic und idlj enthält die JRE auch IDL-Dateien (Interface Definition Language). Die Dateien basieren auf den von der Object Management Group (OMG) definierten Dateien und können von Anwendungen, die eine IDL-Definition ausgewählter ORB-Schnittstellen benötigen, verwendet werden. Die Dateien werden im Verzeichnis Stammverzeichnis_des_Anwendungsservers/java/ibm_lib abgelegt.

Vergewissern Sie sich vor dem Aufrufen des Tools rmic oder idlj, dass das Verzeichnis Stammverzeichnis_des_Anwendungsservers/java/ibm_bin in der richtigen Suchfolge der Variablen PATH in der Umgebung angegeben ist. Wenn Ihre Anwendung IDL-Dateien im Verzeichnis Stammverzeichnis_des_Anwendungsservers/java/ibm_lib verwenden, müssen Sie außerdem sicherstellen, dass das Verzeichnis in der Variablen PATH angegeben ist.


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=rorb_orbprog
Dateiname:rorb_orbprog.html