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

Reply via email to