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
- 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.
<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
- 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.
<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.
- 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.
<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
- 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.
<extension point="com.ibm.wsspi.rrd.rrd-emf-packages">
<emfPackages>
<emfPackage className="com.ibm.ws.rrd.webservices.types.emf.impl.TypesFactoryImpl" />
</emfPackages>
</extension>