mercredi 2 janvier 2008

Sensor Edge Server (SES) et eflow.xml avec JMS (DispatcherJMS)




Voici un petit mémo sur SES et une destination JMS présente par exemple sur un autre serveur d'application ou sur une EDA suite Oracle.

L'opération consiste à propager la donnée RFID dans l'ESB Oracle (par exemple) via cette fois-ci l'utilisation de JMS (Java Message Service). Le JMS du serveur d'application Oracle propose en standard cette fonctionnalité avec ou sans persistance des messages (mémoire, fichier, base de données).

Pour configurer votre eflow.xml :


il faut configurer l'appel à votre propre classe par :

component name="callBean" class="oracle.edge.tools.eflow.impl.CallBeanState"

voici mon eflow.xml pour vous détailler, accèssible sur ce lien ICI .

Le contenu de ce fichier doit être copié dans votre fichier eflow.xml dans le répertoire : ORACLE_HOME\j2ee\home\applications\edge\edge\config

La ligne du fichier eflow.xml suiavante permet de spécifier la classe qui sera exécuté lors d'un évènement RFID :

callBean name="callbean.event" class="eflow.JmsHuguBean" methodName="onEvent" userData="queueRFIDHugu"

Dans mon cas c'est cette classe JmsHuguBean dont le source est disponible ICI

Cette classe java compilée doit être présente dans le répertoire du Edge Server : ORACLE_HOME\j2ee\home\applications\edge\edge\extensions\classes

A chaque évènements RFID, elle créée un message de type JMS vers une Queue JMS : queueRFIDHugu

Ps: Afin d'obtenir l'URN EPC (exemple : URN:EPC:ID:SGTIN-64:10240.917504.25165824), j'ai rajouté dans la classe java ces lignes :

....

import oracle.edge.tools.epc.BinarySet;
import oracle.edge.tools.epc.Encodings;
import oracle.edge.tools.epc.Tag;
.....


// EPC:URN get
Encodings encs;
String value=null;
try {
encs = new Encodings();
BinarySet bs = new BinarySet(id.length() * 4, id.toUpperCase(), 16);
Tag tag = encs.decode(bs);
Logger.n("JMSHuguBean --- decoded...!");
value = tag.getField("urn");
Logger.n("JMSHuguBean --- urn hugu ==> " + value);
} catch (Exception e) { e.printStackTrace(); }

Aucun commentaire: