2009-08-05 8 views
3

J'ai une application OSGi de grande taille et en croissance, avec un nombre de bundles. Je suis curieux de connaître la meilleure façon de gérer ce type d'application. Actuellement, j'utilise Eclipse et Maven, mais bien que ce soit génial pour construire des paquets (via maven-bundle-plugin), il n'a pas été facile de gérer l'ensemble de l'application. Ce que je voudrais faire est soit avoir une configuration ONE run ou ONE pom.xml qui peut être lancé et l'ensemble de l'application/projet être construit et lancé. En outre, je voudrais avoir quelque chose qui serait bon pour le débogage.Gestion d'une application OSGi volumineuse

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

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

Merci, Stephen

Répondre

1

Une configuration d'exécution est possible via Pax Runner. Il vous permet de choisir l'implémentation de la plate-forme OSGi, de spécifier des profils (ensembles de bundles pré-packagés pour certains rôles, par exemple web, log, ds, etc.) et d'avoir un bon support, par exemple, il peut charger des bundles à partir du référentiel Maven. Par conséquent, vous pouvez avoir une configuration d'exécution comme

--platform=felix 
--log=INFO 
--profiles=scalamodules,ds,config,log 
mvn:com.my/bundle/[email protected] 
# other bundles 

Dans le cas où votre demande est très grande ou si vous avez des applications différentes, il un moyen de créer vos propres profils aussi bien.

0

je suis tout à fait nouveau pour OSGi mais,

ne serait-il possible d'utiliser OBR service de telle sorte que vous auriez un fichier référentiel OBR qui a besoin des faisceaux et laisser l'OBR -service comprendre les dépendances et peupler votre OSGIhost pour vous?

1

Eh bien ...

Tout deopends sur ce que vous entendez par "gérer" l'application.

Pour le lancement, le développement et le débogage du développement en continu - Eclipse IDE devrait parfaitement répondre à vos besoins. Maven ... Je ne peux pas en parler, car je ne l'ai jamais utilisé moi-même.

Nous avons une assez grande application basée sur l'éclipse (plusieurs, en fait) et sur le côté des choses, nous n'utilisons rien de spécial en dehors de l'Eclipse et de son SCM intégré.

Dans le serveur de génération cc, nous utilisons également eclipse sans tête pour faire le bâtiment et l'empaquetage.

Maintenant que l'installation de l'espace de travail a été un peu hors-jeu avec toutes les dépendances et les étapes de construction intermédiaires, nous étudions Buckminster pour gérer la matérialisation des ressources de la plate-forme cible et de l'espace de travail. Si cela fonctionne, nous passerons probablement aussi à la construction avec Bucky - cela semble prometteur.

(Je n'ai aucune expérience avec PAX, mais en un coup d'oeil, cela semble prometteur aussi ...

0

Cette zone, je pense, a un très faible support pour le moment. OSGI ne définit pas vraiment quoi que ce soit sur le déploiement ou l'empaquetage, donc c'est à d'autres frameworks (par exemple Eclipse) de trouver leur propre façon de le faire. Si vous construisez une application RCP (Eclipse base), les systèmes Eclipse font tout ça, jusqu'à créer des exes etc. Cependant, les builds sont principalement effectués sur l'espace de travail Eclipse, les builds sans tête sont plus compliqués. Le projet Tycho tente de le rendre plus sensible en rejoignant les cycles de construction Maven et Eclipse, mais 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 aussi mon cas, alors vous devrez probablement lancer 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 consiste à lister les références - appelons le projet 'bundle-list'. Ensuite, nous utilisons la disposition pax pour exécuter le projet en mode développement. Ceci est réalisé en faisant de 'bundle-list' le parent du pom de provisioning du projet pax (généralement dans le dossier 'provisioning'). Ensuite, lorsque vous démarrez pax, il utilise la liste des bundles de ce projet pour démarrer OSGI. Les références de bundle dans le projet 'bundle-list' 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' comme parent. Ce projet utilise divers plugins pour créer une distribution, y compris le téléchargement des jarres de bundle. La distribution inclut des scripts qui démarrent OSGI, mais ceux-ci sont écrits à la main, il n'y a pas de système pax ici.

Cela fonctionne bien pour nous de garder la liste des paquets en un seul endroit, mais il y a encore beaucoup de scripts écrits à la main, et il y a des problèmes de partage de configuration entre les deux systèmes - par exemple. fichiers de configuration, niveaux de démarrage du faisceau, etc.

Questions connexes