Vous trouverez sur mon blog des infos sur différents sujets techniques. Ils proviennent de mes expériences chez BEA, Versata ... et actuellement ORACLE
vendredi 28 décembre 2007
jeudi 27 décembre 2007
Sensor Edge Server (SES) et eflow pour appeler un Web Service
Ensuite vous devez stopper le SES, placer le fichier Eflow.xml dans le répertoire que nous avons décrit ci-dessus. Dans ce fichier vous pouvez librement rajouter des actions, suite à un événement RFID.
Oracle vous propose un fichier eflo.xml contenant beaucoup de commentaires. Je vous propose une version plus simple à télécharger sur ce lien : http://hugues.simonnet.free.fr/logiciels/blog/eflow.xml
Noter que dans ce fichier vous devez spécifier :
- le WSDL de réception
- la méthode à appeler
- le namespace xmlns de votre Web Service
ORACLE_HOME\j2ee\home\applications\edge\edge\log\edgeX.log
(où X est le numéro du fichier)
Thu Dec 27 16:59:15 CET 2007(8): ThreadFactory: New thread Name=SES.TF.EventFlow Runnable=oracle.edge.tools.eflow.EventFlow@86f847
Thu Dec 27 16:59:15 CET 2007(8): Valid dispatcher preloaded, using it
PS:
Noter également que EFLOW est trés ouvert, vous pouvez implémenter votre propre classe java de propagation de l'information RFID, en déclarant une classe java dans le fichier eflow.xml:
comme cela est fait pour l'appel d'un web service:
component name="callWs" class="oracle.edge.tools.eflow.impl.WsState"
exemple:
component name="callHugu" class="com.hugu.tools.MaClasseBlog"
Cette classe peut ainsi faire appel à ce que vous voulez ....
mercredi 26 décembre 2007
ESB Oracle - problèmes de connexion
En cas de problème de connexion à votre ESB Oracle, soit pour un déploiement vérfier ces informations dans le schéma ORAESB. Ces informations doivent être présente dans la table esb_parameter de votre base de donnée :
insert into esb_parameter values ('PROP_NAME_MONITOR_TOPIC_JNDI','OracleASjms/ESBMonitorTopic');
insert into esb_parameter values ('PROP_NAME_ERROR_XATCF_JNDI','OracleASjms/MyXATCF');
insert into esb_parameter values ('PROP_NAME_ERROR_RETRY_JNDI','OracleASjms/ESBErrorRetryTopic');
insert into esb_parameter values ('DT_OC4J_HTTP_PORT','<
insert into esb_parameter values ('PROP_NAME_CONTROL_TCF_JNDI','OracleASjms/MyXATCF');
insert into esb_parameter values ('PROP_NAME_MONITOR_TCF_JNDI','OracleASjms/MyTCF');
insert into esb_parameter values ('PROP_NAME_ERROR_TOPIC_JNDI','OracleASjms/ESBErrorTopic');
insert into esb_parameter values ('PROP_NAME_ERROR_TCF_JNDI','OracleASjms/MyTCF');
insert into esb_parameter values ('PROP_NAME_CONTROL_TOPIC_JNDI','OracleASjms/ESBControlTopic');
insert into esb_parameter values ('PROP_NAME_DEFERRED_TCF_JNDI','OracleASjms/MyTCF');
insert into esb_parameter values ('DT_OC4J_HOST','<
insert into esb_parameter values ('PROP_NAME_DEFERRED_XATCF_JNDI','OracleASjms/MyXATCF');
insert into esb_parameter values ('PROP_NAME_ERROR_RETRY_TCF_JNDI','OracleASjms/MyXATCF');
vendredi 21 décembre 2007
Utilisation de AQ (Advanced Queueing) avec SOA
Tous les messages sont stockés dans la base Oracle et vous assure de les retrouver quoiqu'il se passe, notamment en mettant en oeuvre l'option Oracle RAC (Cluster de la base de donnée).
La première étape consiste à créer une queue dans votre base de donnée (9i jusqu'à 11g). Pour ma part j'utilise 10g. On peut bien sure scripter la création d'une queue ou alors utiliser l'interface graphique d'administration de votre base de donnée.
Aller sur le "Database Control" qui est une webapp livrée avec votre base de donnée. Si elle ne démarre pas vérifier que le service Windows associé est bien démarré.
Pour ma part, il s'agit de l'URL : http://hsimonne-fr.fr.oracle.com:1158
(où hsimonne-fr.fr.oracle.com est le nom de mon serveur)
Connectez-vous en tant que SYSDBA puis cliquer sur l'onglet "maintenance". Dans cette rubrique, vous avez "Stream", cliquez sur "setup", puis "messaging". Vous devez arriver à ce type d'écran:
Cliquez ensuite sur "CREATE" puis sélectionner "Normal Queue, Fixed Datatype".
Saisir un nom pour votre "queue de message" et une table associé pour y stocker les informations.
Vous devez ensuite créer une table qui stockera l'ensemble de vos messages :
Le nom de table doit être précédé du schema comme "EDGE" .
Exemple :
Cliquez ensuite sur "Finish". Pour rendre actif votre queue AQ, il faut lui associer un "Subscriber". Cet objet va gérer la réception des messages et la consommation de ceux-ci.
Sélectionnez alors :
puis "GO" et dans l'écran suivant "CREATE" pour arriver sur cela :
Entrez un nom de "subcriber" et le nom de la queue précédemment créer avec son schéma devant comme dans l'image ci-dessus. Voila c'est terminée pour la partie DataBase.
Ensuite dans votre Jdev préféré, soit vous pousser un message depuis l'ESB ou depuis BPEL en utilisant l'adapteur proposé en standard pour AQ adapter:
puis suivre les étapes suivantes:
Attention ! Spécifier bien une connexion database avec l'utilisateur ayant accès au schéma dans lequel réside votre queue.
Spécifier comme ci-dessus si vous consommer ou envoyer un message, puis sélectionner ensuite votre queue depuis cet écran :
Spécifier ensuite si vous voulez corréler les messages, c'est à dire dépiler ou envoyer un message contenant un certain identifiant (sinon ne rien mettre):
Spécifier le format du message stocké, en utilisant par exemple un XSD:
Et voila c'est fini pour envoyer un message AQ !
Si vous souhaitez maintenant le consommer, il suffit de prendre le même adpateur AQ et de spécifier que vous consommer. Attention ! Dans ce cas il faut spécifier le "Subscriber" configuré dans la Base de donnée, exemple:
Ainsi, votre ESB Oracle ou Bpel Manager peut envoyer / consommer des messages avec AQ.
vendredi 14 décembre 2007
Interfaces Web Services - Oracle BAM
Vous pouvez ainsi pousser des données directement dans vos dataObjects de votre BAM, il suffit d'utiliser l'Url:
http://hsimonne-fr:8080/oraclebam/services/DataObject/DataObjectOperations.asmx
Pour récupérer, créer, supprimer des dataObjects :
http://hsimonne-fr:8080/oraclebam/services/DataObject/DataObjectDefinition.asmx
ainsi pour la méthode UpSert du premier lien "asmx", on peut envoyer la réquête exemple suivante (en utilisant par exemple SOAPUI ou l'interface .Net de Oracle BAM)
Détail du 3iem champ sur cette image ci-dessous:
via SOAPui :
j'attire votre attention sur la fenêtre en bas à gauche, il faut passer une authentification vers le web service OracleBam