IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OGSi Java Discussion :

[OSGi] Ne pas démarrer les bundles quand on lance OSGi depuis Eclipse


Sujet :

OGSi Java

  1. #1
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2013
    Messages : 9
    Points : 8
    Points
    8
    Par défaut [OSGi] Ne pas démarrer les bundles quand on lance OSGi depuis Eclipse
    Bonjour à tous

    Alors voilà mon soucis : j'utilise OSGi via la console Eclipse, et à chaque fois que je démarre OSGi tous mes bundles se lancent automatiquement ce qui me pose des soucis. J'ai tenté deux choses :
    - Arrêter les bundles posant problème avant de quitter OSGi
    - Modifier ma configuration de Run en décochant lesdits bundles
    Ca n'a pas marché. Dans le premier cas les bundles se lancent tout de même lorsque je redémarre OSGi, et dans le deuxième cas mes bundles n'apparaissent pas dans la liste des bundles installés lorsque je fais la commande ss.

    Le lancement automatique pourrait ne pas être gênant ; le problème est que l'un de mes bundles demande à l'utilisateur de saisir des informations dans la console. La lecture au clavier fonctionne mal lorsque c'est demandé au démarrage, je suis obligée de faire planter mon application pour pouvoir arrêter et redémarrer ce bundle. Lorsque ce bundle redémarre, je n'ai plus de soucis avec la lecture au clavier (même si mes autres bundles ont toujours des threads lancés en arrière plan).
    D'où ma question : comment faire pour ne pas démarrer certains bundles au démarrage d'OSGi ?

    J'ai fait une recherche rapide avant de créer le sujet, je n'ai rien vu qui réponde à ma question (a priori). Désolée pour le doublon si le sujet existe déjà ^^

    Merci d'avance pour votre aide !

  2. #2
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    OOPS
    ce n'est pas du tout dans l'esprit d'OSGI que de faire un prompt dans la phase de démarrage.

    je crois que c'est ton bundle qui est mal conçu

    il faut voir l'activator comme une phase d'init
    elle est là pour mettre en place tous les éléments nécessaire au fonctionnement du bundle et lancer tous les tâche en background.

    l'interaction avec l'utilisateur ne se faisant qu'à la demande.

    A+JYT

  3. #3
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2013
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par sekaijin Voir le message
    OOPS
    ce n'est pas du tout dans l'esprit d'OSGI que de faire un prompt dans la phase de démarrage.

    je crois que c'est ton bundle qui est mal conçu

    il faut voir l'activator comme une phase d'init
    elle est là pour mettre en place tous les éléments nécessaire au fonctionnement du bundle et lancer tous les tâche en background.

    l'interaction avec l'utilisateur ne se faisant qu'à la demande.

    A+JYT
    La demande d'informations à l'utilisateur ne se fait pas dans l'activator ; l'activator du bundle en question ne fait que lancer un thread, et c'est ce thread qui gère l'interaction avec l'utilisateur. Peut-être que gérer l'interaction via une interface graphique aurait été mieux pour éviter ce genre de soucis, mais je n'avais pas vraiment le temps de me pencher sur ça. ^^


    Je n'ai toujours pas trouvé de réponse à ma question (et je ne sais toujours pas s'il est possible de ne pas démarrer certains bundles au démarrage d'OSGi), mais j'ai trouvé une alternative qui me permet de faire fonctionner mon application correctement. J'utilisais la console d'Eclipse RCP, qui n'arrivait pas à distinguer les commandes OSGi et la "lecture au clavier" dans le cadre de mon application.
    Si ça peut aider quelqu'un, j'ai simplement modifié la configuration en rajoutant un numéro de port pour OSGi dans les arguments du Run, afin de pouvoir utiliser séparément OSGi (via telnet sur un terminal à part) et la console Eclipse pour l'interaction utilisateur.

  4. #4
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    C'est contre nature.

    pense que ton bundle c'est un plugin pour ton navigateur
    lorsque le navigateur démare il liste tous les plugins actif et charge en mémoire tous le nécessaire à leur fonctionnement.
    il lance toute les taches de fond.

    ensuite durant ta navigation ces taches de fond interceptent des événements et réagissent.
    AddBlock va intercepter les flux HTML et bloquer les requêtes vers certain site. PDFview va intercepter les contenus PDF et afficher son interface.
    et pour d'autre il te faudra lancer les action toi-même.

    mais tu ne vas pas modifier le code de ton navigateur pour empêcher les plugins de démarrer.

    dans karaf soit tu les arrêtes (comme on désactive un plugin) et lorsque tu redémarre il sont toujours arrêté, soit tu les laisse actif et au redémarrage il le seront toujours.

    si tu utilise Karaf je te conseille de regarder comment on implémente une commande shell
    c'est très simple.
    du coup ton bundle démarre et ne fait rien
    mais lorsque un utilisateur (il peut y en avoir plusieurs en même temps ) tape la commande il entre en interaction avec ton bundle dans sa console.

    les tutos de christian sont plutôt bien fait à ce sujet
    http://www.liquid-reality.de/display...araf+Tutorials
    dans le N°6 il fait des commandes qui permettent d'interroger des datasources.

    A+JYT

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [2012] Ne pas activer les liens quand export vers Excel
    Par teuhinui dans le forum SSRS
    Réponses: 5
    Dernier message: 22/09/2014, 15h55
  2. Réponses: 5
    Dernier message: 14/12/2009, 09h36
  3. Pas d'événement OnClose quand on arrête W2K
    Par Altau dans le forum C++Builder
    Réponses: 9
    Dernier message: 26/01/2009, 18h36
  4. y'a pas les données quand je veux imprimer
    Par StyleXP dans le forum Bases de données
    Réponses: 38
    Dernier message: 25/03/2006, 19h15
  5. jointure renvois pas tous les enregistrements
    Par rayonx dans le forum Langage SQL
    Réponses: 7
    Dernier message: 29/08/2002, 12h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo