[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:
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:
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:
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:
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