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