Schnittstellen für Servleterweiterungen

Sie können Erweiterungsgeneratoren und -Handler verwenden, um der fernen Nachricht für Servlet- und Portletaufrufe Inhalt hinzuzufügen. Außerdem kann die Servleterweiterung vorhandenes Verhalten durch die Nutzung des Filterkontextes modifizieren. Das Erweiterungsframework Remote Request Dispatcher (RRD) verwendet Erweiterungsgeneratoren, die beliebige Daten an eine abgehende RRD-Anforderung anfügen, und Erweiterungshandler, die die Daten konsumieren und basierend auf den empfangenen Daten Aktionen ausführen. Weitere Informationen zum Paket com.ibm.wsspi.rrd.extension finden Sie im Artikel zu den weiteren Anwendungsprogrammierschnittstellen, der für Administratoren bestimmt ist.

Erweiterungsgeneratoren

Erweiterungsgeneratoren, die Teil einer Erweiterungsgeneratorkette sind, werden vor der Einleitung einer RRD-Anforderung aufgerufen. Diese Erweiterungsgeneratorkette ist im Erweiterungspunkt com.ibm.wsspi.rrd.generators der Datei plugin.xml definiert, die sich an einer der folgenden Positionen befinden kann:
  • In einem anderen OSGI-Paket.
  • In einer gemeinsam genutzten Bibliothek, z. B. einer gemeinsam genutzten Bibliothek, die an den Klassenlader eines Servers gebunden ist.
  • Im Verzeichnis WEB-INF einer lokalen Webanwendung, die RRD unterstützt.

Jeder Erweiterungsgenerator wird durch ein Generatorelement definiert, das ein Attribut id enthält, das verwendet wird, um dem Erweiterungsgenerator eine eindeutige ID zuzuordnen, damit jeder Erweiterungsgenerator von Erweiterungen adressiert werden kann, die den RRD-Antwortdaten hinzugefügt werden. Mit dem Attribut class wird der Name der Klasse des Erweiterungsgenerators angegeben, die die Schnittstelle com.ibm.wsspi.rrd.extension.generator.ExtensionGenerator implementieren muss. Außerdem kann jedem Erweiterungsgenerator über das Attribut order eine Ausführungsreihenfolge zugeordnet werden. Dies ist hilfreich, um die Ausführungsreihenfolge der Erweiterungsgeneratoren in einer Umgebung festzulegen, in der mehrere Deskriptordateien für Erweiterungsgeneratoren vorhanden sind. Darüber hinaus hat ein Generator ein verbindliches Attribut type, das den Typ des Generators definiert. Für Servlet-RRD ist der Wert "servlet", und die Klasse muss die Schnittstelle com.ibm.wsspi.rrd.extension.generator.ExtensionGenerator implementieren.

Außerdem kann mit jedem Erweiterungsgenerator eine beliebige Anzahl von Initialisierungsparametern angegeben werden. Hierfür geben Sie null oder mehrere Elemente init-param als untergeordnete Elemente des Elements generator an. Im Folgenden sehen Sie eine Beispieldeklaration für einen Erweiterungsgenerator:
<extension point="com.ibm.wsspi.rrd.generators">
  <generator id="int1"
        class="com.ibm.ws.rrd.example.extension.IntExtensionGenerator"
        order="1"
        type=”servlet”>
	   <init-param>
              <param-name>intValue</param-name>
              <param-value>100</param-value>
	   </init-param> 
   </generator>
   <generator id="string1"
        class="com.ibm.ws.rrd.example.extension.StringExtensionGenerator"
        order="2"
        type=”servlet”>
      <init-param>
              <param-name>stringValue</param-name>
              <param-value>This is an example string</param-value>
      </init-param> 
   </generator>
   <generator id="int2"
        class="com.ibm.ws.rrd.example.extension.IntExtensionGenerator"
        order="3"
        type=”servlet”>
      <init-param>
              <param-name>intValue</param-name>
              <param-value>200</param-value>
      </init-param> 
   </generator>
</extension>
Weitere Informationen zum Paket com.ibm.wsspi.rrd.extension.generator finden Sie im Artikel "Weitere Anwendungsprogrammierschnittstellen", der für Administratoren bestimmt ist.

Erweiterungshandler

Erweiterungshandler, die Teil einer Erweiterungshandlerkette sind, werden nach dem Empfang einer RRD-Anforderung aufgerufen. Diese Erweiterungshandlerkette ist im Erweiterungspunkt com.ibm.wsspi.rrd.handlers der Datei plugin.xml definiert, die sich an einer der folgenden Positionen befinden kann:
  • In einem anderen OSGI-Paket.
  • In einer gemeinsam genutzten Bibliothek, z. B. einer gemeinsam genutzten Bibliothek, die an den Klassenlader eines Servers gebunden ist.
  • Im Verzeichnis WEB-INF einer lokalen Webanwendung, die RRD unterstützt.

Jeder Erweiterungshandler wird durch ein Element handler definiert, das die Attribute namespaceURI und localName enthält. Diese Attributkombination definiert den qualifizierten Namen der Erweiterungsdaten, die vom Erweiterungshandler verarbeitet werden können. Außerdem erfordert jeder Erweiterungshandler eine eindeutige Kennung, die mit dem Attribut id definiert wird. Der mit diesem Attribut angegebene Wert muss einem Erweiterungsgenerator entsprechen, der Erweiterungsdaten mit einem entsprechenden Namen und einer entsprechenden ID generiert. Mit dem Attribut "class" wird der Name der Klasse des Erweiterungshandler angegeben, die die Schnittstelle "com.ibm.wsspi.extension.handler.ExtensionHandler" implementieren muss. Darüber hinaus hat ein Handler ein verbindliches Attribut "type", das den Typ des Handlers definiert. Der Wert ist "servlet", und die Klasse muss die Schnittstelle "com.ibm.wsspi.rrd.extension.handler.ExtensionHandler" implementieren.

Außerdem kann mit jedem Erweiterungshandler eine beliebige Anzahl von Initialisierungsparametern angegeben werden. Hierfür geben Sie null oder mehrere Elemente init-param als untergeordnete Elemente des Elements "handler" an. Im Folgenden sehen Sie eine Beispieldeklaration für einen Erweiterungshandler:
  <extension point="com.ibm.wsspi.rrd.handlers">
      <handler id="int1"
               class="com.ibm.ws.rrd.example.extension.IntExtensionHandler"
               namespaceURI="http://www.ibm.com/ws/rrd/ext/types"
               localName="SimpleType" order="1"
               type=”servlet”/>
      <handler id="string1"
               class="com.ibm.ws.rrd.example.extension.StringExtensionHandler"
               namespaceURI="http://www.ibm.com/ws/rrd/ext/types"
               localName="SimpleType" order="2"
               type=”servlet”/>
      <handler id="int2"
               class="com.ibm.ws.rrd.example.extension.IntExtensionHandler"
               namespaceURI="http://www.ibm.com/ws/rrd/ext/types"
               localName="SimpleType" order="3"
               type=”servlet”/>
</extension>
Weitere Informationen zum Paket com.ibm.wsspi.rrd.extension.handler finden Sie im Artikel "Weitere Anwendungsprogrammierschnittstellen", der für Administratoren bestimmt ist.

Erweiterungsdelegatoren

Ein Erweiterungsdelegator ermöglicht RRD, beliebige Servlet-Container zu bearbeiten, indem Benutzern erlaubt wird, die Instanzen von Erweiterungsgenerator- und -Handler-Ketten anzugeben, die während eines RRD-Aufrufs verwendet werden sollen. RRD verwaltet eine vom Benutzer erweiterbare Liste mit Erweiterungsdelegatoren und wählt zur Laufzeit, basierend auf dem Typ der abgesetzten Servletanforderung einen entsprechenden Delegator aus.

Eigene Erweiterungsdelegatoren können im Erweiterungspunkt com.ibm.wsspi.rrd.rrd-extension-delegator in der Datei plugin.xml angegeben werden, die sich an den folgenden Positionen befinden kann:
  • In einem anderen OSGI-Paket.
  • In einer gemeinsam genutzten Bibliothek, z. B. einer gemeinsam genutzten Bibliothek, die an den Klassenlader eines Servers gebunden ist.
  • Im Verzeichnis WEB-INF einer lokalen Webanwendung, die RRD unterstützt.
Jeder Erweiterungsdelegator wird durch ein Element ExtensionDelegator definiert, das ein Attribut priority für die Definition der relativen Reihenfolge, in der ein Erweiterungsdelegator aufgerufen wird, und ein Attribut classname enthält, das die Implementierungsklasse für einen bestimmen Erweiterungsdelegator enthält, die die Schnittstelle com.ibm.wsspi.rrd.extension.factory.ExtensionDelegator implementieren muss. Die Ausführungsreihenfolge von zwei oder mehr Erweiterungsdelegatoren mit derselben Priorität ist nicht vorhersehbar. Im Folgenden sehen Sie eine Beispieldeklaration für einen Erweiterungsdelegator:
<extension point="com.ibm.wsspi.rrd.rrd-extension-delegator">
  <ExtensionDelegatorRegistration>
    <ExtensionDelegator priority="1" classname="com.ibm.ws.rrd.extension.PortletExtensionDelegator"/>
    <ExtensionDelegator priority="2" classname="com.ibm.ws.rrd.extension.ServletExtensionDelegator"/>
  </ExtensionDelegatorRegistration>
</extension>

Angepasste EMF-Pakete

Erweiterungsdaten, die von einem Erweiterungsgenerator generiert und von einem Erweiterungsghandler konsumiert werden, werden mit dem Eclipse Modeling Framework (EMF) serialisiert. Benutzer, die eigene Erweiterungsdaten verwenden möchten, müssen den Erweiterungspunkt com.ibm.wsspi.rrd.rrd-emf-packages nutzen, um sicherzustellen, dass vor der Verwendung von RRD die richtigen EMF-Pakete initialisiert werden. Dieser Erweiterungspunkt ist Teil der Datei plugin.xml, die sich an den folgenden Positionen befinden kann:
  • In einem anderen OSGI-Paket.
  • In einer gemeinsam genutzten Bibliothek, z. B. einer gemeinsam genutzten Bibliothek, die an den Klassenlader eines Servers gebunden ist.
  • Im Verzeichnis WEB-INF einer lokalen Webanwendung, die RRD unterstützt.
Jedes EMF-Paket wird mit einem Element emfPackage definiert, das ein Element className enthält, das auf die generierte Implementierungsklasse der EMF-Factory für ein bestimmtes EMF-Paket (die generierte Modellklasse, die org.eclipse.emf.ecore.impl.EFactoryImpl implementiert) zeigen muss. Im Folgenden sehen Sie eine Beispieldeklaration für ein EMF-Paket:
<extension point="com.ibm.wsspi.rrd.rrd-emf-packages">
  <emfPackages>
    <emfPackage className="com.ibm.ws.rrd.webservices.types.emf.impl.TypesFactoryImpl" />
  </emfPackages>
</extension>
Anmerkung: Wenn der generierte EMF-Modellcode von mehreren Webanwendungen gemeinsam genutzt wird, muss dieser EMF-Modellcode in einer gemeinsam genutzten Serverbibliothek enthalten sein, sofern alle Webanwendungen in demselben Anwendungsserver ausgeführt werden. In Produktionsumgebungen ist dies gewöhnlich nicht der Fall, und der EMF-Modellcode kann auf Ebene der Webanwendung existieren.

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