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

Plateformes réactives et architectures modulaires Java Discussion :

[Karaf] Eviter le redémarrage des bundles actifs quand on en déploie un nouveau


Sujet :

Plateformes réactives et architectures modulaires Java

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    juillet 2004
    Messages
    341
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : juillet 2004
    Messages : 341
    Points : 188
    Points
    188
    Par défaut [Karaf] Eviter le redémarrage des bundles actifs quand on en déploie un nouveau
    Bonjour

    Nous utilisons Karaf 4 pour faire tourner des routes Camel (fichiers .kar générés via Talend Open Studio for ESB).
    Cela fonctionne bien mais nous avons un souci de déploiement : lorsque l'on dépose un nouveau .kar ou une mise à jour d'un .kar existant dans le rep container/deploy cela redémarre tous les autres bundles (la console montre "stopping" puis "resolved" puis "Active"). Cela provoque une interruption de service gênante en environnement de production.

    Pour certains bundles, cela fonctionne bien (pas de redémarrage), exemple de fichier de log :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    2017-10-12 08:46:54,113 | Uninstalling bundles:
    2017-10-12 08:46:54,113 |   gfc.R_FRONTAL_HTTP/0.2.0
    2017-10-12 08:46:54,116 |   org.apache.camel.camel-jetty-common/2.17.3
    2017-10-12 08:46:54,116 |   org.apache.camel.camel-jetty9/2.17.3
    2017-10-12 08:46:54,118 | Refreshing bundles:
    2017-10-12 08:46:54,118 |     gfc.R_FRONTAL_HTTP/0.2.0 (Bundle will be uninstalled)
    2017-10-12 08:46:54,118 |     org.apache.camel.camel-jetty-common/2.17.3 (Bundle will be uninstalled)
    2017-10-12 08:46:54,118 |     org.apache.camel.camel-jetty9/2.17.3 (Bundle will be uninstalled)
    2017-10-12 08:46:54,121 | Done.
    Pour d'autres, on voit qu'il redémarre les autres bundles à cause de dépendances :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    2017-10-12 09:15:22,391 | Changes to perform:
    2017-10-12 09:15:22,391 |   Region: root
    2017-10-12 09:15:22,391 |     Bundles to install:
    2017-10-12 09:15:22,391 |       mvn:gfc.R_FRONTAL_HTTP/R_FRONTAL_HTTP/0.2
    2017-10-12 09:15:22,391 |       mvn:org.apache.camel/camel-jetty-common/2.17.3
    2017-10-12 09:15:22,391 |       mvn:org.apache.camel/camel-jetty9/2.17.3
    2017-10-12 09:15:22,391 |       mvn:org.codehaus.woodstox/stax2-api/3.1.4
    2017-10-12 09:15:22,392 | Installing bundles:
    2017-10-12 09:15:22,392 |   mvn:gfc.R_FRONTAL_HTTP/R_FRONTAL_HTTP/0.2
    2017-10-12 09:15:22,402 |   mvn:org.apache.camel/camel-jetty-common/2.17.3
    2017-10-12 09:15:22,403 |   mvn:org.apache.camel/camel-jetty9/2.17.3
    2017-10-12 09:15:22,403 |   mvn:org.codehaus.woodstox/stax2-api/3.1.4
    2017-10-12 09:15:22,438 | Stopping bundles:
    2017-10-12 09:15:22,438 |   gfc.R7_PU017B_BP_FROMKHEOPSTOSAP/0.1.0
    2017-10-12 09:15:22,444 |   gfc.R_BROKER_KHEOPS/0.1.0
    			    ...
    2017-10-12 09:15:52,287 | Refreshing bundles:
    2017-10-12 09:15:52,287 |     activemq-karaf/5.14.1 (Wired to org.apache.activemq.activemq-osgi/5.14.1 which is being refreshed)
    2017-10-12 09:15:52,287 |     gfc.R7_PU017B_BP_FROMKHEOPSTOSAP/0.1.0 (Wired to org.apache.activemq.activemq-osgi/5.14.1 which is being refreshed)
    2017-10-12 09:15:52,287 |     gfc.R_BROKER_BUS/0.1.0 (Wired to org.apache.activemq.activemq-osgi/5.14.1 which is being refreshed)
    2017-10-12 09:15:52,287 |     gfc.R_BROKER_KHEOPS/0.1.0 (Wired to org.apache.activemq.activemq-osgi/5.14.1 which is being refreshed)
    ...
    En cherchant sur internet, j'ai trouvé ce workaround en modifiant le fichier properties pour précharger les bundles "de base" de Karaf et éviter ainsi le refresh, mais cela ne semble pas fonctionner.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    [root@kardev01 container]# cat etc/org.apache.karaf.features.cfg
    ...
    featuresBoot=\
        (instance, \
        activemq-client, \
        activemq-camel, \
        activemq, \
        package, \
    ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    [root@kardev01 container]# cat etc/startup.properties
    # Bundles to be started on startup, with startlevel
    mvn\:org.ops4j.pax.logging/pax-logging-api/1.8.5 = 8
    mvn\:org.ops4j.pax.logging/pax-logging-service/1.8.5 = 8
    mvn\:org.apache.felix/org.apache.felix.configadmin/1.8.8 = 10
    mvn\:org.apache.felix/org.apache.felix.fileinstall/3.5.4 = 11
    mvn\:org.apache.felix/org.apache.felix.metatype/1.1.2 = 5
    mvn\:org.apache.karaf.services/org.apache.karaf.services.eventadmin/4.0.7 = 5
    mvn\:org.ops4j.pax.url/pax-url-aether/2.4.7 = 5
    mvn\:org.apache.karaf.features/org.apache.karaf.features.core/4.0.7 = 15
    mvn\:joda-time/joda-time/2.9.2 = 50
    J'ai aussi essayé en dézippant le .kar, enlevant dans son features.xml la dépendance vers activemq (ou cxf pour d'autres bundles) dans le fichier monbundle-feature.xml, mais j'ai toujours le souci de refresh.

    Je ne sais plus trop quoi tester d'autre. Quelqu'un maitrise t-il ce sujet déploiement svp ?

    (On peut passer par une autre technique que le rep deploy, par exemple "feature:install", mais pour l'avoir testé on a le même souci)

    Merci !
    Loko

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

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : juillet 2004
    Messages : 4 138
    Points : 9 011
    Points
    9 011
    Par défaut
    réponses extrêmement tardive mais...

    cela ne redémarre pas tous les autre bundle.
    cela redémarre les bundle qui dépendent des bunbles redéployé.

    comme il y a dépendance lors qu'on redéploie on arrête le bundle à redéployer on le désinstalle on le ré installe et on le redémarre.
    ce bundle est donc absent pendant un certain temps
    pendant ce temps un autre bundle qui en dépend ne peut plus y accéder. il est donc arrêté et redémarré le temps de l'opération.


    il y a un autre point à bien comprendre dans le cas de dépendance entre bundles.
    si au lieu de redéployer, vous installez une autre version (2 versions en même temps)
    l'ancienne version reste active. on peut donc l'arrêter après que la nouvelle ait démarrée.
    ainsi il n'y a pas interruption.
    une fois l'ancienne arrêté et désinstallée ne reste que la nouvelle.

    c'est là qu'il y a danger. si un bundle à démarré e prenant une référence à l'ancien version il la garde encore même après la désinstallation.
    il faut redémarrer le dit bundle ou le rafraîchir pour qu'il charge la nouvelle dépendance.

    A+JYT

Discussions similaires

  1. comment eviter le clignotement des feuilles quand je les rends visible
    Par antoine dpt dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/05/2010, 00h01
  2. [DB400][Débutant]comprendre la gestion des processus actif
    Par horalass dans le forum Autres SGBD
    Réponses: 8
    Dernier message: 12/12/2006, 09h26
  3. comment eviter le blocage des contenus actifs sur explorer
    Par reski dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 07/07/2006, 16h41
  4. Réponses: 5
    Dernier message: 24/10/2005, 15h11
  5. Réponses: 2
    Dernier message: 04/10/2002, 09h13

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