Question

J'ai une grande application OSGi en pleine croissance avec un certain nombre de bundles. Je suis curieux de connaître le meilleur moyen de gérer ce type d’application. Actuellement, j'utilise Eclipse et Maven, mais bien que ce soit formidable pour la construction de bundles (via maven-bundle-plugin), il n’a pas été facile de gérer l’ensemble de l’application.

Ce que je voudrais faire est de pouvoir lancer ONE configuration ou ONE pom.xml et de créer et de lancer l’application / le projet entier. De plus, j'aimerais avoir quelque chose qui conviendrait au débogage.

J'ai entendu parler de PAX Construct et je l’ai installé dans Eclipse, mais jusqu’à présent, cela n’a guère été utile (peut-être que je ne l’utilise pas correctement).

Je suis sûr qu'il y a des gens avec des applications OSGi volumineuses gérées correctement. Tout conseil pouvant être partagé aiderait énormément.

Merci Stephen

Était-ce utile?

La solution

Une configuration d'exécution est possible via Pax Runner . Il vous permet de choisir la mise en œuvre de la plate-forme OSGi, de spécifier des profils (ensembles d'ensembles pré-packagés pour certains rôles, par exemple Web , journal , ds , etc. .) et dispose d’un bon support de provisionnement, par exemple, il peut charger des ensembles à partir du référentiel Maven. Par conséquent, vous pouvez avoir une configuration d’exécution telle que

.
--platform=felix
--log=INFO
--profiles=scalamodules,ds,config,log
mvn:com.my/bundle/1.0.1-SNAPSHOT@update
# other bundles

Si votre application est très volumineuse ou si vous possédez différentes applications, vous pouvez également créer vos propres profils.

Autres conseils

Eh bien ...

Tout dépend de ce que vous entendez par "gérer". l'application.

Pour le lancement, la construction et le débogage du temps de développement - Eclipse IDE devrait tout à fait convenir.

Maven ... Je ne peux pas parler pour cela, je ne l'ai jamais utilisé moi-même.

Nous avons une assez grosse application basée sur éclipse (plusieurs, en fait) et, côté développement, nous n'utilisons rien de spécial à part Eclipse et son SCM intégré.

Dans le serveur de compilation cc, nous utilisons également une éclipse sans tête pour la construction et l’emballage.

Maintenant, la configuration de l'espace de travail a pris un peu de retard récemment avec toutes les dépendances et les étapes de construction intermédiaires. Nous étudions donc Buckminster pour la gestion de la matérialisation des ressources de la plateforme cible et de l’espace de travail.

Si cela fonctionne, nous allons probablement passer à la construction avec Bucky également - cela semble prometteur.

(Je n'ai aucune expérience de PAX, mais en un coup d'œil, cela semble prometteur aussi ...)

Je suis assez nouveau pour OSGi mais

ne serait-il pas possible d'utiliser le service OBR de telle sorte que vous auriez un fichier de référentiel OBR qui a besoin des bundles et laissez le service OBR déterminer les dépendances et peupler votre OSGIhost pour vous?

Je pense que ce domaine est très mal soutenu pour le moment. OSGI ne définit pas vraiment le déploiement ou l’emballage, il appartient donc à d’autres frameworks (par exemple, Eclipse) de proposer leur propre façon de procéder.

Si vous construisez une application RCP (base Eclipse), les systèmes eclipse effectuent tout ce travail, allant de la création d'exécutables, etc. Cependant, les constructions sont principalement effectuées dans l'espace de travail Eclipse, les constructions sans tête sont plus délicates. Le projet Tycho tente de rendre cela plus judicieux en rejoignant les cycles de construction Maven et Eclipse. Toutefois, il est toujours axé sur les applications RCP plutôt que sur les OSGI génériques.

Si vous ne faites pas de RCP, ce qui est également mon cas, vous devrez probablement trouver votre propre solution, car je n'ai trouvé aucune solution générale. Voici un aperçu de ce que nous faisons:

Nous définissons un projet POM qui répertorie tous les ensembles contenus dans votre application. Tout ce projet ne fait que lister les références - appelons ça le projet 'bundle-list'.

Ensuite, nous utilisons pax provision pour exécuter le projet en mode développement. Ceci est réalisé en faisant de la "liste de paquets" pom le parent du pom de provisioning du projet pax (généralement dans le dossier "provision"). Ensuite, lorsque vous démarrez Pax, il utilise la liste des ensembles de ce projet pour démarrer OSGI. Les références de paquet dans le projet "liste de paquet" doivent être marquées comme "fournies" pour que cela fonctionne.

Ensuite, pour créer une distribution, nous avons un autre projet. Ce projet a également le projet 'bundle-list' en tant que parent. Ce projet utilise divers plugins pour créer une distribution, notamment le téléchargement des fichiers jar des bundles. La distribution comprend des scripts qui démarrent OSGI, mais ils sont écrits à la main. Il n’ya pas de systèmes pax ici.

Cela fonctionne bien pour nous de garder la liste des ensembles au même endroit, mais il reste encore beaucoup de scripts écrits à la main et il existe une configuration de partage des problèmes entre les deux systèmes - par exemple. fichiers de configuration, niveaux de démarrage des ensembles, etc.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top