Klassenladen für benutzerdefinierte Knoten

Wenn ein benutzerdefinierter Knoten in Java als PAR-Datei verpackt ist, wird er in einem separaten Klassenladeprogramm geladen.

Das Klassenladeprogramm lädt jede Klasse, die in der implementierten PAR-Datei verpackt ist. Diejenigen Klassen, die in der JAR-Datei abgelegt sind, setzen alle Klassen im gemeinsamen Klassenverzeichnis bzw. in der Umgebungsvariable CLASSPATH außer Kraft. Wenn die implementierte PAR-Datei mehr als einen Knotentyp enthält, haben die Knoten dasselbe Klassenladeprogramm. Deshalb sollten benutzerdefinierte Knoten mit gemeinsamen statischen Daten in einer einzigen PAR-Datei verpackt werden.

Benutzerdefinierte Knoten in Java, die als einfache JAR-Dateien verpackt sind, werden in demselben Klassenladeprogramm geladen. Die Klassen sowie die Speicherposition, aus der sie geladen werden, werden in den Benutzertrace geschrieben. Somit können Sie anhand dieser Informationen prüfen, ob die korrekten Klassen geladen werden.

Der Broker verwendet folgenden Klassenladeprogramm-Baum:

Das Diagramm zeigt die Komponenten des Klassenladeprogramm-Baums, die vom Broker benutzt werden. Bootstrap ist der Wurzelknoten des Baums und hat System als einziges untergeordnetes Element. Das untergeordnete Element von System ist Common. Common hat zwei untergeordnete Elemente: Broker und Shared. Broker hat keine untergeordneten Elemente, und Shared hat viele untergeordnete Elemente. Zu den untergeordneten Elementen von Shared gehören Grouped sowie benutzerdefinierte Java-Knoten. Es kann beliebig viele benutzerdefinierte Java-Knoten geben.

Suchpfade für das Klassenladen von benutzerdefinierten Knoten

In einer PAR-Datei verpackte benutzerdefinierte Knoten

Zum Auffinden von Klassen benutzerdefinierter Knoten verwendet der Broker folgenden Suchpfad:
  1. /classes zum Auffinden von Klassen in der implementierten PAR-Datei.
  2. /lib zum Auffinden beliebiger JAR-Dateien in der implementierten PAR-Datei.
  3. WorkPath/shared-classes/ zum Auffinden beliebiger JAR-Dateien.
  4. Die Umgebungsvariable CLASSPATH.

In einer JAR-Datei verpackte benutzerdefinierte Knoten

Zum Auffinden von Klassen benutzerdefinierter Knoten verwendet der Broker folgenden Suchpfad:
  1. Die implementierte JAR-Datei.
  2. WorkPath/shared-classes/ zum Auffinden beliebiger JAR-Dateien.
  3. Die Umgebungsvariable CLASSPATH.

Endorsed Standards zum Überschreiben von Klassen

Der Endorsed-Standards-Überschreibungsmechanismus erlaubt es, die folgenden Standard-Pakete in der Java-Laufzeitumgebung zu überschreiben:

  • javax.rmi.CORBA
  • org.omg.CORBA
  • org.omg.CORBA.DynAnyPackage
  • org.omg.CORBA.ORBPackage
  • org.omg.CORBA.portable
  • org.omg.CORBA.TypeCodePackage
  • org.omg.CORBA_2_3
  • org.omg.CORBA_2_3.portable
  • org.omg.CosNaming
  • org.omg.CosNaming.NamingContextExtPackage
  • org.omg.CosNaming.NamingContextPackage
  • org.omg.Dynamic
  • org.omg.DynamicAny
  • org.omg.DynamicAny.DynAnyFactoryPackage
  • org.omg.DynamicAny.DynAnyPackage
  • org.omg.IOP
  • org.omg.IOP.CodecFactoryPackage
  • org.omg.IOP.CodecPackage
  • org.omg.Messaging
  • org.omg.PortableInterceptor
  • org.omg.PortableInterceptor.ORBInitInfoPackage
  • org.omg.PortableServer
  • org.omg.PortableServer.CurrentPackage
  • org.omg.PortableServer.POAManagerPackage
  • org.omg.PortableServer.POAPackage
  • org.omg.PortableServer.portable
  • org.omg.PortableServer.ServantLocatorPackage
  • org.omg.SendingContext
  • org.omg.stub.java.rmi
  • org.w3c.dom
  • org.xml.sax
  • org.xml.sax.ext
  • org.xml.sax.helpers
Weitere Informationen finden Sie unter Endorsed Standards Override Mechanism.

Um diese Pakete im Broker zu überschreiben, legen Sie die JAR-Dateien für die API-Standards im /lib-Verzeichnis der PAR-Datei ab.

JNDI-Kontext

Beim Eruieren eines JNDI-Kontextes wird das Context-Klassenladeprogramm verwendet. Wenn der Eruierungsvorgang Klassen benutzt, die mit dem benutzerdefinierten Knoten zusammen verpackt sind, dann muss das Context-Klassenladeprogramm mit dem Klassenladeprogramm übereinstimmen, das zum Laden des benutzerdefinierten Knotens verwendet wird. Um sicher zu stellen, dass jeder Thread dasselbe Klassenladeprogramm benutzt, kann folgender Code in die Klasse des benutzerdefinierten Knotens aufgenommen werden:

Thread.currentThread.setContextClassLoader(this.getClass().getClassLoader());
Bemerkungen | Marken | Downloads | Bibliothek | Unterstützung | Feedback

Copyright IBM Corporation 1999, 2009Copyright IBM Corporation 1999, 2009.
Letzte Aktualisierung : 2009-02-17 15:30:03

as24996_