TP : Mise en oeuvre de ServiceMix

Ce TP constitue essentiellement une mise en route sur ServiceMix et n'est pas noté. Il pourra constituer un point de départ pour la réalisation du projet (à réaliser par groupes TIW). Il est ainsi fortement conseillé de se regrouper dès à présent par groupes TIW.

Mise en route

Mise à jour des sources

Se synchroniser avec la dernière version en ligne du projet de base sur la forge:

hg clone https://forge.univ-lyon1.fr/hg/tiw5-2011-tp-base 

ou

hg pull https://forge.univ-lyon1.fr/hg/tiw5-2011-tp-base 

Démarrage de ServiceMix

Utiliser bin/servicemix pour lancer servicemix avec une console. help permet de lister les commandes, parmi lesquelles:

  • activemq:browse
  • activemq:query
  • list
  • display (pour les logs)

Déploiement

Le répertoire smix contient un assemblage de services deployable dans servicemix. Création dans le répertoire projet:

mvn install

puis copie du fichier smix/smix-sa/target/smix-sa-1.0-SNAPSHOT.zip dans le répertoire deploy de ServiceMix.

Regarder la configuration de smix-cxf-bc et tester avec soapUI.

Dessin

Lire les différents fichiers de configuration des sous-projets de smix. Faire un dessin représentant les différents service units, les services exposés et la transmission des messages.

Documentation:

Exercices

Modifier l'assemblage pour:

  • Ajouter des intercepteurs (similaires aux intercepteurs jaxws du TP handlers)
  • Ajouter une queue JMS intermédiaire dans la transmission du message vers le bean AlbumDataService
  • Faire que les messages envoyés à AlbumDataService soient également copiés dans tiw5-data/crees
  • Pouvoir envoyer des messages à AlbumDataService en copiant un fichier, et obtenir éventuellement une réponse dans le répertoire tiw5-data/ads-reponses.
    • Comment gérer la corrélation ?
  • Déployer votre service de stock (c.f. TP 2)

Problèmes

Pb ActiveMQ:

http://servicemix.396122.n5.nabble.com/activemq-list-throws-RuntimeException-td4715215.html

Pb Archetype JMS:

  • Dans le fichier xbeans.xml supprimer le prefixe xmlns:amq="http://activemq.org/config/1.0" et remplacer la connectionFactory par un bean:
    <bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
        <property name="brokerURL" value="tcp://localhost:61616" />
    </bean>

    puis ajouter dans le pom.xml:

        <dependency>
          <groupId>org.apache.servicemix</groupId>
          <artifactId>servicemix-jms</artifactId>
          <version>2011.01</version>
        </dependency>
        <dependency>
        	<groupId>org.apache.geronimo.specs</groupId>
        	<artifactId>geronimo-j2ee-management_1.1_spec</artifactId>
        	<version>1.0.1</version>
        </dependency>
        <dependency>
        	<groupId>org.apache.activemq</groupId>
        	<artifactId>activemq-core</artifactId>
        	<version>5.4.2</version>
        	<exclusions>
        		<exclusion>
        			<artifactId>activeio-core</artifactId>
        			<groupId>org.apache.activemq</groupId>
        		</exclusion>
        		<exclusion>
        			<artifactId>camel-core</artifactId>
        			<groupId>org.apache.camel</groupId>
        		</exclusion>
        		<exclusion>
        			<artifactId>commons-logging</artifactId>
        			<groupId>commons-logging</groupId>
        		</exclusion>
        		<exclusion>
        			<artifactId>commons-logging-api</artifactId>
        			<groupId>commons-logging</groupId>
        		</exclusion>
        	</exclusions>
        </dependency>

Pb de conflit de versions possible avec slf4j