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 im JAR abgelegt sind, setzen die im gemeinsamen Klassenverzeichnis bzw. in der Umgebungsvariable CLASSPATH außer Kraft. Wenn das implementierte PAR 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 im selben Klassenladeprogramm geladen. die Klassen und die Speicherposition, von der sie geladen werden, werden in den Benutzertrace geschrieben, damit anhand dieser Informationen überprüft werden kann, 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 Kind. Kind von System ist Common. Common hat zwei Kinder: Broker and Shared. Broker hat keine Kinder, und Shared hat viele Kinder. Zu den Kindern von Shared gehören Grouped und benutzerdefinierte Java-Knoten. Es kann beliebig viele benutzerdefinierte Java-Knoten geben.

Im Folgenden werden die Komponenten im Klassenladeprogramm-Baum beschrieben:

Suchpfade für das Klassenladen von benutzerdefinierten Knoten

In einem PAR verpackte benutzerdefinierter Knoten

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

In einem JAR 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 des PARs 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 | Rückmeldung
Copyright IBM Corporation 1999, 2006 Letzte Aktualisierung: 23. Aug. 2006
as24996_