Interfaces d'extension de servlet
Les générateurs et les gestionnaires d'extension permettent d'ajouter des contenus au message distant pour les appels de servlet et de portlet. L'extension de servlet peut également modifier le comportement existant en exploitant le concept de filtre. Le cadre d'extension RRD (Remote Request Dispatcher) s'appuie d'une part sur des générateurs d'extension, lesquels attachent des données arbitraires à une demande RRD sortante, et d'autre part sur des gestionnaires d'extension, lesquels réceptionnent les données et réalisent les actions en fonction des données reçues. Pour plus d'informations sur le package com.ibm.wsspi.rrd.extension, voir l'article sur les interfaces de programme d'application supplémentaires dédiées aux administrateurs.
Générateurs d'extension
- Dans un autre regroupement OSGI.
- Dans toute bibliothèque partagée. Par exemple, une bibliothèque partagée associée au chargeur de classe serveur.
- Dans le répertoire WEB-INF d'une application web locale compatible RRD.
Chaque générateur d'extension est défini par un élément generator qui contient un attribut id servant à affecter un identificateur unique au générateur d'extension. De cette manière, tout générateur d'extension peut être visé par des extensions ajoutées à des données de réponse RRD. L'attribut classe est utilisé pour spécifier le nom de classe du générateur d'extension qui doit implémenter l'interface com.ibm.wsspi.rrd.extension.generator.ExtensionGenerator. Chaque générateur d'extension peut également être associé à un ordre d'exécution via l'attribut order. Ceci permet d'appliquer l'ordre d'exécution du générateur d'extension dans un environnement où plusieurs fichiers de descripteur de générateur d'extension sont présents. Le type des générateurs est en outre défini par un attribut type obligatoire. Pour RRD servlet, la valeur est “servlet” et la classe doit implémenter l'interface com.ibm.wsspi.rrd.extension.generator.ExtensionGenerator.
<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>
Pour plus d'informations sur le package com.ibm.wsspi.rrd.extension.generator, voir l'article sur les interfaces de programme d'application supplémentaires dédiées aux administrateurs.Gestionnaires d'extension
- Dans un autre regroupement OSGI.
- Dans toute bibliothèque partagée. Par exemple, une bibliothèque partagée associée au chargeur de classe serveur.
- Dans le répertoire WEB-INF d'une application web locale compatible RRD.
Chaque gestionnaire d'extension est défini par un élément handler qui contient les attributs namespaceURI et localName ; la combinaison des deux définit le nom qualifié des données d'extension que le gestionnaire d'extension peut traiter. Chaque gestionnaire d'extension nécessite en outre un identificateur unique spécifié par l'attribut d'id. La valeur spécifiée par cet attribut doit correspondre à un générateur d'extension, lequel génère les données d'extension d'un nom qualifié et d'un identificateur correspondants. L'attribut classe est utilisé pour spécifier le nom de classe du gestionnaire d'extension qui doit implémenter l'interface com.ibm.wsspi.rrd.extension.handler.ExtensionHandler. Le type des gestionnaires est en outre défini par un attribut type obligatoire. Sa valeur est “servlet” et la classe doit implémenter l'interface com.ibm.wsspi.rrd.extension.handler.ExtensionHandler.
<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>
Pour plus d'informations sur le package com.ibm.wsspi.rrd.extension.handler, voir l'article sur les interfaces de programme d'application supplémentaires dédiées aux administrateurs.Délégataires d'extension
Les délégataires d'extension permettent à RRD de traiter des conteneurs de servlet arbitraires en autorisant les utilisateurs à spécifier quelles instances de chaîne de générateur et de gestionnaire d'extension spécifiques doivent être utilisées au cours d'un appel RRD. RRD conserve une liste de délégataires d'extension complétable par l'utilisateur qui lui permet de sélectionner pendant l'exécution le délégataire approprié en fonction du type de demande de servlet émise.
- Dans un autre regroupement OSGI.
- Dans toute bibliothèque partagée. Par exemple, une bibliothèque partagée associée au chargeur de classe serveur.
- Dans le répertoire WEB-INF d'une application web locale compatible RRD.
<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>
Modules EMF personnalisés
- Dans un autre regroupement OSGI.
- Dans toute bibliothèque partagée. Par exemple, une bibliothèque partagée associée au chargeur de classe serveur.
- Dans le répertoire WEB-INF d'une application web locale compatible RRD.
<extension point="com.ibm.wsspi.rrd.rrd-emf-packages">
<emfPackages>
<emfPackage className="com.ibm.ws.rrd.webservices.types.emf.impl.TypesFactoryImpl" />
</emfPackages>
</extension>