Pour utiliser ServiceMix, mon projet doit être un bundle OSGi?

Je commence à utiliser ServiceMix et Camel et j’ai parcouru de nombreux exemples.

Il semble que les exemples OSGi puissent être déployés dans ServiceMix via un déploiement à chaud ou via une console, mais je ne sais pas comment déployer un projet qui n’est pas un OSGI. Peut-on le faire?

Par exemple, je regarde l’exemple de projet de Camel 2.10.0 appelé camel-example-cxf-proxy. J’ai fait quelques modifications et maintenant je voulais le charger dans ServiceMix. Si je copie / colle dans le répertoire de déploiement, il est chargé mais quand j’essaie de l’exécuter via osgi: start id il échoue.

Cependant, si je l’exécute à partir de l’IDE en tant qu’appareil autonome, il fonctionne très bien et je peux envoyer et recevoir des demandes via SoapUI.

Quand j’aurai fini avec les exemples, je veux créer mon propre projet dans eclipse et faire des tests dans l’EDI et dans ServiceMix. Je ne comprends pas vraiment l’avantage d’OSGi pour le moment. Je ne suis donc pas obligé d’utiliser OSGi pour mon projet.

Ma principale question est la suivante: puis-je déployer un projet non compatible OSGi non JBI dans servicemix? Quelque chose comme le camel-example-cxf-proxy. Si oui, comment puis-je le faire? Si non, comment puis-je OSGi-fy le camel-example-cxf-proxy?

Je vous remercie 🙂

Apache ServiceMix, qui utilise Apache Karaf comme kernel, prend en charge les unités de déploiement enfichables. Bien que OSGi soit l’unité principale.

Vous pouvez déployer des artefacts JBI (par exemple, JBI a été utilisé comme unité de déploiement pour Apache ServiceMix 3.x). Nous proposons donc cela comme chemin de migration pour exécuter JBI dans SMX 4.x.

Un fichier WAR simple peut également être déployé. Vous pouvez par exemple simplement déposer un fichier .war dans le répertoire deploy. Si vous déployez depuis le shell, vous devez préfixer le déployer avec la guerre pour qu’il sache utiliser le déployer de guerre.

Il existe une documentation sur les différents déploieurs enfichables ici http://fusesource.com/docs/esbent/7.0/esb_deploy_osgi/UrlHandlers.html

Par exemple, pour installer un exemple WAR de Apache Wicket en utilisant Maven, vous pouvez le faire depuis le shell:

osgi:install war:mvn:org.apache.wicket/wicket-examples/1.4.7/war?Web-ContextPath=wicket 

La documentation Apache sur deployer est principalement documentée sur Apache Karaf http://karaf.apache.org/manual/2.2.9/users-guide/deployer.html

Maintenant, déployer des applications OSGi peut être un peu compliqué à assembler. Et c’est pourquoi FuseSource a créé FAB pour le rendre beaucoup plus facile. J’ai blogué à ce sujet un peu, qui fait référence à des vidéos et plus de matériel: http://www.davsclaus.com/2012/08/osgi-deployment-made-easy-with-fab.html

Avec FAB, vous pouvez simplement déployer des projets Maven réguliers sans aucune difficulté OSGi.

Si votre projet est un projet Maven, vous pouvez essayer:

 mvn install 

Ensuite, démarrez votre servicemix et en ligne de commande servicemix:

 install mvn:groupId/artifactId/version 

Cela vous invitera à créer un identifiant de bundle. Ensuite, lancez le bundle:

 start  

Vous pouvez vérifier l’état de votre bundle avec la commande “list”

Le projet doit être un paquet à installer dans servicemix / karaf. Les étapes pour faire fonctionner un projet chameau dans OSGi sont les suivantes.

  1. Utilisez le plugin maven bundle dans le pom et configurez-le pour importer / exporter les paquets nécessaires si nécessaire.

  2. Assurez-vous que votre contexte de chameau est défini de manière à ce que OSGi puisse démarrer. Ceci est soit dans l’activateur du paquet, soit dans une configuration de spring au bon endroit ou avec une configuration de plan directeur au bon endroit.

Voir deux de mes tutoriels sur karaf pour plus de détails:

CXF: http://www.liquid-reality.de/x/EoBk

Chameau: http://www.liquid-reality.de/x/G4Bk