2009-09-16 6 views
3

J'ai un framework d'équinoxe avec un tas de bundles démarrés. Maintenant, je mets à jour un paquet en utilisant la console osgi via 'mise à jour. (ou utilisez la méthode fournie: bundle.update (url));Equinox: Mise à jour du bundle perdu après le redémarrage du framework

Tout fonctionne parfaitement ... mais si je redémarre complètement le framework osgi, le bundle précédemment mis à jour est à nouveau dans l'état d'origine (comme c'était avant la mise à jour). J'utilise le update.configurator d'eclipse pour rechercher tous les paquets dans le répertoire plugins et les installer mais je pensais qu'il reconnaît si un paquet a été mis à jour. Est-ce que quelqu'un peut me laisser un indice de ce qui me manque?

merci, Michael Mangeng

Répondre

1

Comment allez-vous commencer Equinox? Commencez-vous avec -clean (qui effacerait les mises à jour)? Notez que 'udpate' met simplement à jour la copie en cours d'exécution, plutôt que de modifier les bits du fichier JAR d'origine sur le disque. Si vous commencez l'équinoxe et que vous passez dans l'ancien bundle (mais pas le nouveau), il pourrait revenir en tant qu'ancien état. P2 devient un peu gênant en supposant qu'une fois que vous avez coupé les bits d'un paquet, alors il reste le même par la suite - en d'autres termes, P2 casse efficacement faire bundle.update() en premier lieu. Cependant, vous devriez probablement gérer les bits sur le disque de sorte que même si quelqu'un fait un -clean, vous obtenez les bonnes données.

+1

salut! non je ne le lance pas avec -clean. Actuellement, j'utilise Equinox 3.2 parce que je n'ai jamais échangé à une version supérieure. Peut-être le problème est que je pensais que bundle.update (...) stocke la version téléchargée de l'ensemble dans la zone de configuration (ce qui est fait pour une série de paquets ... ne connaissent pas les règles quand un pot est stocké là et quand pas). si c'est le cas .. je vais changer mon code afin qu'un téléchargement stocke le fichier dans le système de fichiers d'abord, puis supprimer l'ancienne version. si c'est l'approche Corret. triste que je ne peux pas utiliser bundle.update (InputStream dans) dans ce cas. que pensez-vous? –

+1

La spécification OSGi ne dit rien sur ce qui devrait se produire après le redémarrage; seulement qu'il devrait le ramener. Je ne pense pas que la mise à jour elle-même mettra à jour le paquet persistant - en particulier pour un ensemble basé sur les fichiers. Je ne suis pas sûr de ce qui se passerait si vous installiez un bundle à partir d'une URL distante et que vous faisiez la mise à jour. Dans tous les cas, cette zone de la spécification n'est pas définie dans ce cas :-) Notez que vous pouvez toujours utiliser bundle.update (InputStream) si vous le souhaitez; Cependant, vous devrez faire en sorte que les bits soient mis à jour sur place au bon endroit et ensuite (après) appeler update(). – AlBlue

+0

je vais changer mon impl pour le faire remplacer le bundle basé sur les fichiers d'origine. merci pour votre aide! –

Questions connexes