jeudi 4 septembre 2008

WebCache et OSB - Cacher le résultat de OSB (ALSB)

Ce mémo va vous expliquer comment mettre en cache un requête envoyée à OSB (Oracle Service Bus - ex: ALSB).

Pour cela on utilise un super outil gratuit (Oracle Web Cache).

Côté OSB, j'ai mis en place un Business service qui appelle un webservice utilisant le code java suivant:

package com.oracle.demo;
import java.util.Random;
import javax.jws.*;
@WebService

public class WSDemo {
@WebMethod

public int getID(int i)
{ Random rd = new Random();
return rd.nextInt(i); }
}


Le poxy service dans OSB route la réquête qu'il reçoit sur le Business Service.


J'utilise SoapUi (outil de test de WebService) en utilisant l'url de mon proxy service: http://HSIMONNE-FR:7021/ALSB_Project_1/Proxy_Service_Demo

Le résultat sera donc différent à chaque appel sans utiliser le cache ....

Si l'on utilise maintenant le port 7777 qui fait référence à Oracle Web Cache, le résultat reste le même le temps d'expiration du cache ! Magique !!!!





Ce port 7777 relance la requête de Oracle Web Cache vers OSB ensuite port 7021.

Voici comment j'ai configuré Oracle Web Cache:

il faut effectivement paramètrer une règle de cache pour le POST/GET vers OSB dont le détail est le suivant:



Ensuite depuis SOAPUi et pendant (300 s par exemple) le résultat sera pris du cache de WebCache et WebCache n'intérrogera pas l'OSB.



PS: plus d'informations sur

Oracle Web Cache cliquez sur http://download.oracle.com/docs/cd/B15904_01/caching.1012/b14046/toc.htm

OSB http://e-docs.bea.com/alsb/docs30/

Aucun commentaire: