Ceci est une ancienne révision du document !
Le projet est à réaliser en groupe en prenant les groupes TI5. Pensez à bien vous répartir le travail.
<note important>Pour la faire fonctionner, il faut exécuter dans servicemix la commande features:install activemq-spring
avant l'installation du nouveau service assembly</note>
<note important>Dans la configuration du composant cxf-provider
1), l'attribut useJBIWrapper=false
est indispensable pour faire fonctionner BPEL/ODE avec le composant CXF qui permet de communiquer en http pour appeler les services JBoss.</note>
L'objectif de ce projet est de développer un petit système d'informations à base de services et de composants ayant pour objectif de gérer un système de location de DVDs: RapidoDVD.
On considérera les acteurs suivants:
Chaque client de RapidoDVD possède un compte de location sur le site du magasin virtuel. Son compte doit être approvisionné pour pouvoir louer un DVD. Il peut recharger son compte en ligne, en passant par le prestataire Rapid'Banque.com (voir plus loin).
Un client s'authentifie sur le magasin virtuel RapidoDVD puis consulte le catalogue des films disponibles à la location en DVD. Les descriptions des films sont enrichies à l'aide d'IMDB.
Lorsqu'il a choisi un film, il valide la location pour indiquer au site qu'il souhaite louer ce DVD. Celui-ci tente de débiter son compte. Si son compte est suffisamment approvisionné, le site débite le compte et enregistre la location, et le DVD lui est apporté physiquement par ScootDVD. Dans le cas contraire, la location est bloquée tant que le solde du client n'est pas suffisant, et débloquée dès que le compte est réapprovisionné. Si une location est bloquée pendant plus de 30 minutes, elle est annulée. Une fois le DVD livré, le client est prévenu par messagerie Jabber (XMPP). Lorsqu'il veut rendre le DVD, le client le signale par un message Jabber ou sur le site web de RapidoDVD. ScootDVD vient chercher le DVD. Lorsque cela est fait, le DVD est considéré comme rendu.
Lorsqu'une location vient d'être bloquée ou lorsqu'il consulte son compte sur le site de RapidoDVD, le client peut recharger son compte. Pour cela, il est redirigé sur le site du prestataire de paiement en ligne Rapid'Banque.com, qui gère les transactions financières pour le compte de RapidoDVD. Le site de Rapid'Banque.com demande au client d'entrer le montant à débiter, son numéro de carte et son code confidentiel et se connecte à la banque du client : mabanque.com pour réaliser la transaction. Si cette dernière accepte le paiement, Rapid'Banque.com valide la transaction et redirige le client sur le site de RapidoDVD. Dans le cas contraire, aucune transaction n'est réalisée.
Le client peut également se connecter sur l'interface Web de sa banque (mabanque.com), à l'aide d'un login et d'un mot de passe spécifiques. De là, il peut consulter son compte en banque (différent du compte de location RapidoDVD) ou le recharger en indiquant la somme qu'il souhaite rajouter (pratique ).
Mise à jour: L'application fournie plus haut diffère légèrement du comportement ci-dessus:
user
et un paramètre valeur
, transmis via e.g. l'URL en paramètres GET2). Le premier correspond à l'utilisateur de RapidoDVD ayant un compte à approvisionner, le second à la valeur de l'approvisionnement.Approvisionne.wsdl
) du service à implémenter pour recevoir ce message est fourni dans l'archive tiw5-2012-fourni.zip, dans le projet rapidbank.com
.Ce site contient un catalogue de DVDs alimenté par la base de films de RapidoDVD pour savoir quels films sont disponibles et par IMDB (voir la description plus bas) pour le descriptif des films. Il permet à un client de s'enregistrer (login, password, id Jabber), de consulter son compte, ainsi que sa liste de locations en cours.
Il contient également une partie administration réservée au gérant et permettant d'ajouter un nouvel exemplaire de DVD pour un film en utilisant la référence du film sur IMDB comme point de repère.
Ajouter un compte Jabber pour RapidoDVD. Ce compte pourra recevoir des messages de la part des clients de RapidoDVD pour rendre un DVD, consulter leur solde et consulter la liste des DVDs qu'ils ont loué. C'est aussi ce compte Jabber qui prévient le client lorsque le DVD commandé est arrivé.
Ce site est utilisé par les livreurs de ScootDVD. Il leur permet de préciser quand ils prennent ou déposent un DVD chez RapidoDVD ou chez un client.
Ce site possède une interface Web permettant aux clients de faire un virement vers le compte d'un site marchand. Pour cela, il consomme le service de transactions bancaires proposé par mabanque.com. Lorsqu'une transaction est acceptée, il envoie un message au site marchand indiquant l'identifiant du client et la somme qui a été transférée et redirige le client sur ce site. Lorsqu'une transaction est refusée, il notifie également le site.
<note tip>Pour le lancer:
java -jar rapidbank.com/target/rapidbank.com-2012.0-jar-with-dependencies.jar
ajouter –help
pour les options</note>
Ce site réalise une gestion basique du compte en banque du client. Le site de mabanque.com possède deux interfaces :
<note tip>Pour le lancer:
java -jar mabanque.com/target/mabanque.com-2012.0-jar-with-dependencies.jar
Ajouter –help
pour les options.
Interface d'administration: http://localhost:8082/admin </note>
Les informations transiteront entre les différents acteurs en passant par un bus de service (ServiceMix). Le cas échéant, il sera possible d'utiliser un ou plusieurs processus BPEL. Les services implémentés en Java ainsi que les sites Web de l'application RapidoDVD tourneront en parallèle sur un serveur JBoss. La communication Jabber se fera par l'intermédiaire d'un serveur XMPP local (fourni).
L'application ScootDVD tournera sur un autre port de la VM, et sera réalisée en Spring.
Les données d'IMDB seront disponibles via un point d'accès SPARQL (fourni). La partie de l'application Web qui consiste à enrichir la description des films à l'aide des données IMDB sera de préférence réalisée en Linked Data côté client (en JavaScript).
Une nouvelle mouture de la machine vituelle TI1_TIW5 sera fournie jeudi 29/11 matin. Les changements par rapport à la version actuelle sont les suivants:
4store-web
3). Ce point d'accès contient des données sur les films issus de freebase.com.(cd apps/jabber; java -jar vysper-run.jar)
. L'ajout des utilisateurs se fait via modification du fichier users.properties
. L'outil Internet → Pidgin peut être utilisé pour interagir directement avec le serveur.
Le projet de base disponible via Mercurial ici https://forge.univ-lyon1.fr/hg/inf2018m-2012-tpbase (zip) a été mis-à-jour.
Il intègre un projet servicemix (smix
) divisé en plusieurs sous-projet. Ces sous-projets ont pour objectif de servir à la fois d'exemples et de configuration de départ, l'idée étant de modifier les fichiers de configuration de ces sous-projets sans ajouter d'autres sous-projets.
Ce projet est un binding component permettant d'interfacer les messages du service avec HTTP. Il est configuré via le fichier src/main/resources/xbean.xml
qui fait référence au fichier hello.wsdl
. Il permet au service de recevoir des requêtes http://localhost:8081/services/HelloImplService et http://localhost:8081/services/XMPPService. Il permet au bus d'utiliser le service disponible à l'adresse http://localhost:8080/services/HelloImplService4).
<note tip>On peut remaquer qu'on a utilisé le port 8081 pour les services exposés par servicemix afin de garder le 8080 disponible pour JBoss</note>
Ce projet défini un processus BPEL qui agit comme un simple proxy vers un service de type HelloService. Les fichiers à étudier sont dans ./src/main/resources/
.
<note important>L'utilisation d'un service exterieur au bus nécessite d'être configuré directement au niveau du fichier deploy.xml
. Dans l'exemple fourni, on ne passe donc pas par smix-cxf dans le process BPEL pour accéder au service tournant sous JBoss</note>
Ce projet défini les routes camel utilisées pour connecter les composants précédents. Elles sont configurées dans le fichier src/main/resources/camel-context.xml
. Les routes sont les suivantes (bien regarder comment le lien est fait en terme de nommage des services):
toto@localhost
, les affiche dans le log puis les envoie sur la file JMS XMPPQueue.Testtoto@localhost
apparaissent donc 2 fois dans le log.Ce projet sert simplement à regrouper les 3 précédents en une archive à déployer dans servicemix. <note important>Bien déployer l'archive .zip. L'archive .jar ne fonctionne pas.</note>
La commande bin/servicemix
lance le serveur et fourni une interface textuelle de gestion. Bien que l'on récupère rapidement la main du côté de l'interface texte, le serveur est en fait assez long à démarrer → vérifier l'utilisation CPU avec top
.
log:display -n 20
affiche les 20 dernières entrées du loglist
liste les bundles installésinstall file:///chemin/vers/le/fichier/a/deployer.zip
permet d'installer un fichier et indique le numéro correspondant au bundle.start xxx
démarre le bundle xxxstop xxx
arrête le bundle indiquéuninstall xxx
déinstalle le bundle indiqué.nmr:list
liste les point d'accès connus dans servicemixactivemq:browse --amqurl tcp://localhost:61616 XMPPQueue.Test
affiche le contenu de la file XMPPQueue.Test
<note tip>Pour trouver quel processus occupe le port 8085:
lsof -i :8085
</note>
<note important>Avant de lancer 4store-web
, changer les permissions de /var/lib/4store/films/
sudo chmod -R a+rxw /var/lib/4store/films/
Editer également le fichier /etc/xdg/autostart/gnome-keyring-pkcs11.desktop
(en sudo) et y ajouter LXDE;
après OnlyShowIn=GNOME;Unity;
. Merci à Nathalie pour l'astuce.</note>
<note tip>Tuer les processus lancés par 4store-web:
killall 4s-httpd killall 4s-backend
</note>