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?
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 >>>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>> >>>>>> >>>>>> >>>> >>>> >>>> >> >> >>