Vous pouvez créer un filtre personnalisé pour le serveur proxy,
si celui-ci doit exécuter une fonction qui n'est normalement pas fournie dans les paramètres du produit, telle qu'une consignation personnalisée.
Avant de commencer
- Déterminez l'emplacement où vous allez stocker l'artefact contenant le
filtre que vous créez. Vous pouvez importer cet artefact à partir d'un système de fichiers local ou distant.
- Vous devez connaître le nom du serveur proxy sur lequel vous voulez installer
le filtre personnalisé.
- Vous devez démarrer la console d'administration qui contrôle ce serveur proxy, celle-ci n'étant pas encore démarrée.
Pourquoi et quand exécuter cette tâche
Un filtre est un moyen secondaire et facultatif de contrôler une fonction,
dépassant la méthode de contrôle normalement fournie par les paramètres type du produit. Par exemple, une application pourrait utiliser un mécanisme de filtrage de consignation
pour supprimer tous les événements ayant une clé de message particulière.
Procédure
- Créez un filtre personnalisé.
- Créez une classe pour étendre
com.ibm.wsspi.proxy.filter.http.HttpDefaultFilter.
- Remplacez la méthode doFilter abstraite et, éventuellement, les
les méthodes d'initialisation et de destruction. Si vous remplacez les méthodes d'initialisation et de destruction, vous
devez faire appel aux super versions de ces méthodes pour conserver la fonctionnalité de cycle de vie du filtre.
- Ecrivez une nouvelle méthode doFilter utilisant l'interface HttpProxyServiceContext.
Cette nouvelle méthode doFilter peut être écrite de telle manière qu'elle soit capable de :
- modifier tout artefact associé à la demande ou à la réponse, tel
que la réponse-même, le code de réponse ou les en-têtes,
- Modifiez tous les artefacts qui sont associés à la fois avec la demande et
la réponse.
- obtenir des informations soit sur la demande soit sur la réponse,
- obtenir des informations à la fois sur la demande et sur la réponse.
- Afin de déterminer l'ordinal convenable pour le filtre, utilisez le MBean du filtre de serveur proxy, proxyFilterMbean.
proxyFilterMbean = AdminControl.queryNames('type=ProxyServerFilterBean,*')
AdminControl.invoke(proxyFilterMbean, 'viewAllFilters')
Tous les filtres traités sur le serveur proxy s'affichent dans l'ordre de leur traitement.
- Créez le fichier de descripteur du filtre, filter-context.xml
Ce fichier sert à définir tous les filtres ayant ce descripteur. L'exemple suivant illustre une version de base d'un fichier filter-context.xml.
Dans cet exemple, le descripteur détermine où et quand le filtre donné est exécuté à la fois sur la demande et la réponse. Le lieu d'exécution du filtre est
déterminé par le point de filtrage. Dans cet exemple, le filtre
est exécuté après réception de la demande.
L'ordinal détermine quand le filtre
sera traité par rapport à d'autres filtres au même point de filtrage. Plus l'ordinal est élevé, plus le filtre sera placé haut dans la file d'attente de traitement.
<?xml version="1.0" encoding="UTF-8>
<filter-context xmlns="http://www.ibm.com/2003/FilterContextSchema">
<description>Proxy Filter Sample descriptor</description>
<display-name>Proxy Sample Filter</display-name>
<filter>
<filter-name>HttpRequestFilter</filter-name
<filter-class>com.ibm.ws.proxy.sample.HttpRequestFilter</filter-class>
<description>HTTP sample filter to run at REQUEST filter point</description>
<display-name>HTTP Request Sample</display-name>
<protocol-name>HTTP</protocol-name>
<filter-point>RequestReceived</filter-point>
<ordinal>1000</ordinal>
</filter>
</filter-context>
- Regroupez dans un fichier JAR les fichiers .class compilés pour le filtre et le descripteur
de filtre.
- Importez l'artefact (fichier JAR) qui contient le filtre personnalisé.
- Dans la console d'administration, cliquez sur .
- Sélectionnez soit Système de fichiers local soit Système de
fichiers distant pour indiquer l'emplacement du fichier JAR.
- Indiquez le nom qualifié complet du fichier JAR.
Le
nom qualifié complet du fichier JAR inclut le chemin du répertoire
où est placé le fichier ainsi que son nom. Si vous ne connaissez pas le nom qualifié complet du fichier JAR, utilisez la fonction Parcourir pour rechercher le fichier.
- Créez une application de niveau métier (BLA) incluant cet artefact.
- Dans la console d'administration, cliquez sur .
- Dans la zone Nom, entrez un nom pour la nouvelle application que vous créez.
Vous pouvez également définir une description de cette application dans la zone Description.
- Cliquez sur Apply.
- Créez une unité de composition (CU) de BLA à partir de l'artefact.
- Dans le tableau de Ressources déployées, cliquez sur Ajouter
> Ajouter une ressource.
- Sélectionnez le nom de l'artefact que vous avez importé lors de la première étape, puis cliquez sur Continuer.
- Changez les paramètres de l'unité de composition selon les besoins, puis
cliquez sur Modifier la cible.
- Dans la liste de cibles de déploiement disponibles, sélectionnez le serveur proxy sur lequel vous voulez déployer cette unité de composition,
puis cliquez sur OK.
Lorsque vous cliquez sur OK, le produit mappe l'unité de composition
vers le serveur proxy sélectionné.
- Indiquez les options de relations pour cette unité de composition.
- Cliquez sur Finish.
Cliquez sur nom_application pour vérifier que le produit a correctement ajouté la CU. Si le produit a correctement ajouté la CU, son nom apparaît dans la liste de ressources déployées pour ce BLA.
- Démarrez le serveur proxy.
- Démarrez le BLA contenant le filtre.
Résultats
Le filtre est en cours d'exécution sur le serveur proxy.
Que faire ensuite
Utilisez le MBean de filtre de serveur proxy,
proxyFilterMbean, pour vérifier que le filtre est installé sur le
serveur proxy et qu'il est traité dans le bon ordre par rapport aux
autres filtres déployés sur ce serveur. S'il est nécessaire de changer l'ordre dans lequel ce filtre est traité,
exécutez la commande modifyOrdinal selon le MBean proxyFilterMbean.