Hi Grzegorz https://github.com/lnnwvr/karaf/tree/startup-also-boot/examples/karaf-docker-example
you can see the odd behaviour ,... featuresBoot = \ instance/4.5.0.SNAPSHOT, \ package/4.5.0.SNAPSHOT, \ scr/4.5.0.SNAPSHOT, \ log/4.5.0.SNAPSHOT, \ karaf-docker-example-app/4.5.0.SNAPSHOT, \ karaf-docker-example-startup-app-feature/4.5.0.SNAPSHOT, \ ##### startUpFeature ssh/4.5.0.SNAPSHOT, \ pax-web-http-whiteboard/8.0.27, \ framework/4.5.0.SNAPSHOT, \ #### Should not be here at all? system/4.5.0.SNAPSHOT, \ eventadmin/4.5.0.SNAPSHOT, \ #### startUpFeature feature/4.5.0.SNAPSHOT, \ shell/4.5.0.SNAPSHOT, \ management/4.5.0.SNAPSHOT, \ service/4.5.0.SNAPSHOT, \ jaas/4.5.0.SNAPSHOT, \ deployer/4.5.0.SNAPSHOT, \ diagnostic/4.5.0.SNAPSHOT, \ wrap/2.6.14, \ bundle/4.5.0.SNAPSHOT, \ config/4.5.0.SNAPSHOT, \ kar/4.5.0.SNAPSHOT On Tue, 21 May 2024 at 18:25, Grzegorz Grzybek <gr.grzy...@gmail.com> wrote: > > > wt., 21 maj 2024 o 15:47 Matthias Leinweber <m.leinwe...@datatactics.de> > napisał(a): > >> Hi, >> >> this is at least an explanation for the refresh. But the bootFeatures >> still seem bugg. Should i try to create a simple test with karaf examples? >> > > If you provide some github example, I could review it ;) > > regards > Grzegorz > > >> >> br, >> Matthias >> >> On Tue, 21 May 2024 at 15:31, Grzegorz Grzybek <gr.grzy...@gmail.com> >> wrote: >> >>> The logs should contain an explanation. >>> >>> pax-logging-log4j2 (or your fragment) may contain some optional >>> (resolution:=optional) imports which are satisfied by some bundles from >>> Camel features... This makes Karaf's FeatureService include Pax Logging in >>> the set of "bundles to refresh". >>> The details should be in the logs. >>> >>> regards >>> Grzegorz >>> >>> wt., 21 maj 2024 o 15:25 Matthias Leinweber <m.leinwe...@datatactics.de> >>> napisał(a): >>> >>>> Hi, >>>> >>>> >>>> >> compile scopeby default goes to "startup" phase of "profile >>>> management". >>>> Ah ok this is working now too.. >>>> >>>> Then it is also added to the boot features. >>>>> >>>>> >>>>> Hmm, I'm not sure why's that... Even if it's true (I can't check now), >>>>> it shouldn't affect the process and cause extra refreshes. >>>>> In extreme case, where all the features are "startup", you should get >>>>> all the bundles installed (and active if not fragments) the moment Karaf's >>>>> FeatureService kicks in... >>>>> >>>> >>>> The thing is when i install e.g. feature camel, pax-logging gets >>>> restarted for idk why. If i remove rahla.logging from >>>> >>>> featuresBoot = \ >>>> instance/4.4.6, \ >>>> package/4.4.6, \ >>>> log/4.4.6, \ >>>> rahla.logging/1.0.16.SNAPSHOT, \ >>>> ssh/4.4.6, \ >>>> pax-url-wrap/2.6.14, \ >>>> framework/4.4.6, \ >>>> system/4.4.6, \ >>>> feature/4.4.6, \ >>>> shell/4.4.6, \ >>>> management/4.4.6, \ >>>> service/4.4.6, \ >>>> jaas/4.4.6, \ >>>> shell-compat/4.4.6, \ >>>> deployer/4.4.6, \ >>>> diagnostic/4.4.6, \ >>>> bundle/4.4.6, \ >>>> config/4.4.6, \ >>>> kar/4.4.6 >>>> >>>> then it does not get restarted when I install camel. This drives me >>>> crazy. >>>> >>>> >>>> Maven build says: >>>> [INFO] Loading boot repositories >>>> ... >>>> [INFO] adding feature repository: >>>> mvn:rahla.feature/rahla.logging/1.0.16-SNAPSHOT/xml/features >>>> ... >>>> [INFO] Feature rahla.logging/1.0.16.SNAPSHOT is defined as a boot >>>> feature >>>> [INFO] adding maven artifact: >>>> mvn:com.fasterxml.jackson.core/jackson-annotations/2.15.2 >>>> [INFO] adding maven artifact: >>>> mvn:rahla/loki-appender/1.0.16-SNAPSHOT >>>> [INFO] adding maven artifact: >>>> mvn:com.fasterxml.jackson.core/jackson-databind/2.15.2 >>>> [INFO] adding maven artifact: >>>> mvn:org.ops4j.pax.logging/pax-logging-log4j2-extra/2.2.7 >>>> [INFO] adding maven artifact: >>>> mvn:com.fasterxml.jackson.core/jackson-core/2.15.2 >>>> ... >>>> >>>> Boot and installed looks like: >>>> >>>> /home/mleinweber/projects/rahla/assembly/pom.xml >>>> >>>> All dependency features are scope runtime except rahla.logging which is >>>> compile >>>> <bootFeatures> >>>> <feature>pax-url-wrap</feature> >>>> <feature>shell</feature> >>>> <feature>shell-compat</feature> >>>> <feature>feature</feature> >>>> <feature>jaas</feature> >>>> <feature>ssh</feature> >>>> <feature>management</feature> >>>> <feature>bundle</feature> >>>> <feature>config</feature> >>>> <feature>deployer</feature> >>>> <feature>diagnostic</feature> >>>> <feature>feature</feature> >>>> <feature>instance</feature> >>>> <feature>kar</feature> >>>> <feature>log</feature> >>>> <feature>package</feature> >>>> <feature>service</feature> >>>> <feature>system</feature> >>>> </bootFeatures> >>>> <installedFeatures> >>>> <feature>fradi</feature> >>>> </installedFeatures> >>>> >>>> >>>> Startup works fine >>>> mvn\:org.apache.karaf.features/org.apache.karaf.features.extension/4.4.6 >>>> = 1 >>>> mvn\:org.ops4j.pax.url/pax-url-aether/2.6.14 = 5 >>>> mvn\:org.ops4j.pax.logging/pax-logging-api/2.2.7 = 8 >>>> mvn\:com.fasterxml.jackson.core/jackson-annotations/2.15.2 = 8 >>>> mvn\:org.ops4j.pax.logging/pax-logging-log4j2/2.2.7 = 8 >>>> mvn\:org.ops4j.pax.logging/pax-logging-log4j2-extra/2.2.7 = 8 >>>> mvn\:rahla/loki-appender/1.0.16-SNAPSHOT = 8 >>>> mvn\:com.fasterxml.jackson.core/jackson-core/2.15.2 = 8 >>>> >>>> I debugged a bit during build process: >>>> >>>> Profile bootOverlay = Profiles.getOverlay(bootProfile, allProfiles, >>>> environment); >>>> adds the startup features (my library + "framework") before >>>> Profile bootEffective = Profiles.getEffective(bootOverlay, false); .. >>>> and bootEffective.getFeatures() is used >>>> >>>> br, >>>> Matthias >>>> >>>> On Tue, 21 May 2024 at 13:29, Grzegorz Grzybek <gr.grzy...@gmail.com> >>>> wrote: >>>> >>>>> Hi >>>>> >>>>> compile scopeby default goes to "startup" phase of "profile >>>>> management". See some comments I've added to Fuse Karaf with >>>>> karaf-maven-plugin: >>>>> https://github.com/jboss-fuse/fuse-karaf/blob/7.x.redhat-7-x/assemblies/fuse-karaf/pom.xml#L208-L225 >>>>> (it's a public repo). >>>>> >>>>> So in practice there's no such thing as "startup feature" - simply the >>>>> bundles from such feature go to etc/startup.properties, preserving >>>>> start-level attribute of a <bundle> within such <feature>. This should be >>>>> the way you add a fragment bundle for Pax Logging - as early as possible. >>>>> >>>>> Then it is also added to the boot features. >>>>> >>>>> >>>>> Hmm, I'm not sure why's that... Even if it's true (I can't check now), >>>>> it shouldn't affect the process and cause extra refreshes. >>>>> In extreme case, where all the features are "startup", you should get >>>>> all the bundles installed (and active if not fragments) the moment Karaf's >>>>> FeatureService kicks in... >>>>> >>>>> regards >>>>> Grzegorz Grzybek >>>>> >>>>> wt., 21 maj 2024 o 13:15 Matthias Leinweber < >>>>> m.leinwe...@datatactics.de> napisał(a): >>>>> >>>>>> Hello Grzegorz, >>>>>> >>>>>> now connecting the dots which jboss fuse and your expert knowledge ;) >>>>>> >>>>>> Anyway I shaded the additional library and didn't add the import. >>>>>> Anyway, a new problem when I add a feature with scope compile to the >>>>>> startupFeature config. Then it is also added to the boot features. This >>>>>> causes a restart of pax-logging-log4j2 which causes some trouble with the >>>>>> appender code. >>>>>> >>>>>> I currently try to see if something like: >>>>>> >>>>>> <startupBundles> >>>>>> <bundle >>>>>> start-level="8">mvn:org.ops4j.pax.logging/pax-logging-log4j2-extra/${pax-logging.version}</bundle> >>>>>> <!--mor bundles--> >>>>>> </startupBundles> >>>>>> is possible and get rid of the extra feature. But it seems that >>>>>> start-level is always 30. >>>>>> >>>>>> Any ideas? >>>>>> >>>>>> On Tue, 21 May 2024 at 11:41, Grzegorz Grzybek <gr.grzy...@gmail.com> >>>>>> wrote: >>>>>> >>>>>>> Hi >>>>>>> >>>>>>> `org.osgi.framework.system.packages.extra` can be changed in >>>>>>> karaf-maven-plugin when building custom Karaf distro. You can also >>>>>>> provide >>>>>>> your own config.properties - that's what we do in Fuse Karaf. >>>>>>> >>>>>>> But I think the easiest solution for you is to exclude generation of >>>>>>> such import clause by adding `!sun.nio.ch` if you're not really >>>>>>> using it in your fragment. >>>>>>> >>>>>>> regards >>>>>>> Grzegorz Grzybek >>>>>>> >>>>>>> >>>>>>> >>>>>>> wt., 21 maj 2024 o 10:58 Matthias Leinweber < >>>>>>> m.leinwe...@datatactics.de> napisał(a): >>>>>>> >>>>>>>> I figured out that i added my logging stuff too late.: As a bundle >>>>>>>> dependency in the assembly with a startup level which is too high (30) >>>>>>>> which results in a restart of the logging system. Anyway after >>>>>>>> creating an >>>>>>>> additional feature with start level 8 and adding it to startupFeatures >>>>>>>> i am >>>>>>>> pretty close to a solution. >>>>>>>> >>>>>>>> But i get >>>>>>>> [ERROR] Failed to execute goal >>>>>>>> org.apache.karaf.tooling:karaf-maven-plugin:4.4.6:assembly >>>>>>>> (default-assembly) on project rahla: Unable to build assembly: Unable >>>>>>>> to >>>>>>>> resolve root: missing requirement [root] osgi.identity; >>>>>>>> osgi.identity=rahla.logging; type=karaf.feature; >>>>>>>> version=1.0.16.SNAPSHOT; >>>>>>>> filter:="(&(osgi.identity=rahla.logging)(type=karaf.feature)(version>=1.0.16.SNAPSHOT))" >>>>>>>> [caused by: Unable to resolve rahla.logging/1.0.16.SNAPSHOT: missing >>>>>>>> requirement [rahla.logging/1.0.16.SNAPSHOT] osgi.identity; >>>>>>>> osgi.identity=org.agrona.core; type=osgi.bundle; >>>>>>>> version="[1.12.0,1.12.0]"; >>>>>>>> resolution:=mandatory [caused by: Unable to resolve >>>>>>>> org.agrona.core/1.12.0: >>>>>>>> missing requirement [org.agrona.core/1.12.0] osgi.wiring.package; >>>>>>>> filter:="(osgi.wiring.package=sun.nio.ch)"]] >>>>>>>> >>>>>>>> I am currently digging through the source code to see if I can >>>>>>>> change org.osgi.framework.system.packages.extra during execution of the >>>>>>>> plugin? Or does anyone know a better solution? >>>>>>>> >>>>>>>> br, >>>>>>>> Matthias >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> On Sat, 18 May 2024 at 10:33, Matthias Leinweber < >>>>>>>> m.leinwe...@datatactics.de> wrote: >>>>>>>> >>>>>>>>> Thank you for the support. Worked like a charm. >>>>>>>>> >>>>>>>>> Grzegorz Grzybek <gr.grzy...@gmail.com> schrieb am Sa., 18. Mai >>>>>>>>> 2024, 08:47: >>>>>>>>> >>>>>>>>>> Hi >>>>>>>>>> >>>>>>>>>> You should not get this file from original jar - it has to be >>>>>>>>>> generated using Maven configuration of two Maven plugins: >>>>>>>>>> >>>>>>>>>> - maven-compiler-plugin to configure >>>>>>>>>> >>>>>>>>>> org.apache.logging.log4j.core.config.plugins.processor.PluginProcessor >>>>>>>>>> - maven-bundle-plugin to ensure resource mapping: >>>>>>>>>> >>>>>>>>>> META-INF/org/apache/logging/log4j/core/config/plugins/Log4j2Plugins.dat=target/classes/META-INF/org/apache/logging/log4j/core/config/plugins/Log4j2Plugins.dat >>>>>>>>>> >>>>>>>>>> See: >>>>>>>>>> https://github.com/ops4j/org.ops4j.pax.logging/blob/main/pax-logging-samples/fragment-log4j2/pom.xml#L41-L77 >>>>>>>>>> >>>>>>>>>> regards >>>>>>>>>> Grzegorz Grzybek >>>>>>>>>> >>>>>>>>>> pt., 17 maj 2024 o 19:28 Matthias Leinweber < >>>>>>>>>> m.leinwe...@datatactics.de> napisał(a): >>>>>>>>>> >>>>>>>>>>> Ok, it doesn't seem so complicated.. Anyway, my java skills are >>>>>>>>>>> a bit outdated. Working with private-package looks good in the >>>>>>>>>>> first place. >>>>>>>>>>> But how do I get the Log4j2Plugins.dat out of the original jar into >>>>>>>>>>> my >>>>>>>>>>> bundle? >>>>>>>>>>> >>>>>>>>>>> On Fri, 17 May 2024 at 16:55, Grzegorz Grzybek < >>>>>>>>>>> gr.grzy...@gmail.com> wrote: >>>>>>>>>>> >>>>>>>>>>>> Hello >>>>>>>>>>>> >>>>>>>>>>>> You can find a sample fragment here: >>>>>>>>>>>> https://github.com/ops4j/org.ops4j.pax.logging/tree/main/pax-logging-samples/fragment-log4j2 >>>>>>>>>>>> That's all there is ;( >>>>>>>>>>>> >>>>>>>>>>>> regards >>>>>>>>>>>> Grzegorz Grzybek >>>>>>>>>>>> >>>>>>>>>>>> pt., 17 maj 2024 o 16:26 Matthias Leinweber < >>>>>>>>>>>> m.leinwe...@datatactics.de> napisał(a): >>>>>>>>>>>> >>>>>>>>>>>>> Hello Karaf Team, >>>>>>>>>>>>> >>>>>>>>>>>>> is it possible to directly add a custom log4j2 appender via >>>>>>>>>>>>> wrap protocol? >>>>>>>>>>>>> >>>>>>>>>>>>> I added log4j2.packages = pl.tkowalcz.tjahzi.log4j2 to >>>>>>>>>>>>> org.ops4j.pax.logging.cfg but i get ERROR : Unable to locate >>>>>>>>>>>>> plugin for Loki >>>>>>>>>>>>> >>>>>>>>>>>>> I fear that i have to build a fragment bundle for pax logging >>>>>>>>>>>>> .. if yes where can i find some doc? >>>>>>>>>>>>> >>>>>>>>>>>>> br. >>>>>>>>>>>>> Matthias >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>> >>>>>> >>>>>> >>>> >>>> >>>> >> >> >>