You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@karaf.apache.org by "Siano, Stephan" <st...@sap.com> on 2017/05/30 09:26:48 UTC

strange issue with karaf-maven-plugin

Hi,

I am trying to build a custom karaf distribution with the karaf-maven-plugin.

In my pom, I have defined compile time dependencies to the framework kar and the standard feature xml and runtime dependencies to the framework, spring and enterprise feature xmls.

The karaf -maven-plugin defines framework-logback as framework, eventadmin as startup feature, wrapper as installed feature, and standard and pax-war-tomcat as boot features.

If I do this, everything seems to work as expected, I get a custom distribution with logback logger and a tomcat web container:
...
pax-http            | 6.0.3   |          | Started | org.ops4j.pax.web-6.0.3 | Implementation of the OSGI HTTP Service
pax-http-whiteboard | 6.0.3   |          | Started | org.ops4j.pax.web-6.0.3 | Provide HTTP Whiteboard pattern support
pax-war             | 6.0.3   |          | Started | org.ops4j.pax.web-6.0.3 | Provide support of a full WebContainer
pax-http-tomcat     | 6.0.3   |          | Started | org.ops4j.pax.web-6.0.3 | Provide Tomcat support
pax-war-tomcat      | 6.0.3   | x        | Started | org.ops4j.pax.web-6.0.3 |

Now I want to change the pax-web version (from 6.0.3 as defined in karaf 4.1.1 to 6.0.4). In order to do that, I added the pax-web feature xml in version 6.0.4 as a runtime dependency and changed the boot feature from "pax-war-tomcat" to "pax-war-tomcat/6.0.4". The resulting distribution is a bit weird.

Name                | Version          | Required | State   | Repository              | Description
--------------------+------------------+----------+---------+-------------------------+--------------------------------------------------
pax-jetty           | 9.3.14.v20161028 |          | Started | org.ops4j.pax.web-6.0.4 | Provide Jetty engine support
pax-http-jetty      | 6.0.4            |          | Started | org.ops4j.pax.web-6.0.4 |
pax-http            | 6.0.4            |          | Started | org.ops4j.pax.web-6.0.4 | Implementation of the OSGI HTTP Service
pax-http-whiteboard | 6.0.4            |          | Started | org.ops4j.pax.web-6.0.4 | Provide HTTP Whiteboard pattern support
pax-war             | 6.0.4            |          | Started | org.ops4j.pax.web-6.0.4 | Provide support of a full WebContainer
pax-http-tomcat     | 6.0.4            |          | Started | org.ops4j.pax.web-6.0.4 | Provide Tomcat support
pax-war-tomcat      | 6.0.4            | x        | Started | org.ops4j.pax.web-6.0.4 |
...
pax-jetty           | 9.3.14.v20161028 |          | Started | org.ops4j.pax.web-6.0.3 | Provide Jetty engine support
pax-http-jetty      | 6.0.3            |          | Started | org.ops4j.pax.web-6.0.3 |
pax-http-whiteboard | 6.0.3            |          | Started | org.ops4j.pax.web-6.0.3 | Provide HTTP Whiteboard pattern support
pax-war             | 6.0.3            |          | Started | org.ops4j.pax.web-6.0.3 | Provide support of a full WebContainer
pax-http-tomcat     | 6.0.3            |          | Started | org.ops4j.pax.web-6.0.3 | Provide Tomcat support

As you can see there are not only the expected features installed (in version 6.0.3), but also the pax-web-jetty and the pax-jetty features. The installed versions are not only 6.0.4 but also 6.0.3.

Does anyone have an idea what is going on here? What do I need to change to avoid installing pax-http-jetty and pax-jetty? Why are actually both versions installed (6.0.4 and 6.0.4)? I could not find any installed feature that depends on pax-http-tomcat in version 6.0.3.

Best regards
Stephan


RE: strange issue with karaf-maven-plugin

Posted by "Siano, Stephan" <st...@sap.com>.
Hi Guillaume,

I created https://issues.apache.org/jira/browse/KARAF-5165 for the issue and put it to component karaf-feature (though I am not sure whether this is the correct component for this). The attached POM will reproduce the issue, if you uncomment the three lines in there, you will get the expected result.

Best regards
Stephan

From: Guillaume Nodet [mailto:gnodet@apache.org]
Sent: Dienstag, 30. Mai 2017 13:54
To: user <us...@karaf.apache.org>
Subject: Re: strange issue with karaf-maven-plugin

When the plugin creates the assembly, it needs to compute what resources are needed for boot features.  Startup features are pre-installed, so the resolution happens at build time, however, boot features are resolved at startup time by the FeaturesService, which means it needs all the input files.  If you have multiple versions for a given feature, the plugin will put all the repositories in the assembly, so that the FeaturesService will be responsible for doing the resolution and choosing which feature to install.   That can explain why you have multiple versions in the assembly.

I'm not really sure why you would end up with both 6.0.3 and 6.0.4 versions installed at runtime though.
Could you create a jira and attach a pom to replicate the issue, it may be worth investigating...

2017-05-30 13:36 GMT+02:00 Siano, Stephan <st...@sap.com>>:
Hi,

one update: After I added the boot following boot features
                        <feature>pax-war-tomcat/6.0.4</feature>
                        <feature>pax-http-whiteboard/6.0.4</feature>
                        <feature>pax-http-tomcat/6.0.4</feature>
                        <feature>pax-war/6.0.4</feature>
it works, so I have a workaround for now, however it would be interesting to find out why this works.

Best regards
Stephan

-----Original Message-----
From: Siano, Stephan [mailto:stephan.siano@sap.com<ma...@sap.com>]
Sent: Dienstag, 30. Mai 2017 11:27
To: user@karaf.apache.org<ma...@karaf.apache.org>
Subject: strange issue with karaf-maven-plugin

Hi,

I am trying to build a custom karaf distribution with the karaf-maven-plugin.

In my pom, I have defined compile time dependencies to the framework kar and the standard feature xml and runtime dependencies to the framework, spring and enterprise feature xmls.

The karaf -maven-plugin defines framework-logback as framework, eventadmin as startup feature, wrapper as installed feature, and standard and pax-war-tomcat as boot features.

If I do this, everything seems to work as expected, I get a custom distribution with logback logger and a tomcat web container:
...
pax-http            | 6.0.3   |          | Started | org.ops4j.pax.web-6.0.3 | Implementation of the OSGI HTTP Service
pax-http-whiteboard | 6.0.3   |          | Started | org.ops4j.pax.web-6.0.3 | Provide HTTP Whiteboard pattern support
pax-war             | 6.0.3   |          | Started | org.ops4j.pax.web-6.0.3 | Provide support of a full WebContainer
pax-http-tomcat     | 6.0.3   |          | Started | org.ops4j.pax.web-6.0.3 | Provide Tomcat support
pax-war-tomcat      | 6.0.3   | x        | Started | org.ops4j.pax.web-6.0.3 |

Now I want to change the pax-web version (from 6.0.3 as defined in karaf 4.1.1 to 6.0.4). In order to do that, I added the pax-web feature xml in version 6.0.4 as a runtime dependency and changed the boot feature from "pax-war-tomcat" to "pax-war-tomcat/6.0.4". The resulting distribution is a bit weird.

Name                | Version          | Required | State   | Repository              | Description
--------------------+------------------+----------+---------+-------------------------+--------------------------------------------------
pax-jetty           | 9.3.14.v20161028 |          | Started | org.ops4j.pax.web-6.0.4 | Provide Jetty engine support
pax-http-jetty      | 6.0.4            |          | Started | org.ops4j.pax.web-6.0.4 |
pax-http            | 6.0.4            |          | Started | org.ops4j.pax.web-6.0.4 | Implementation of the OSGI HTTP Service
pax-http-whiteboard | 6.0.4            |          | Started | org.ops4j.pax.web-6.0.4 | Provide HTTP Whiteboard pattern support
pax-war             | 6.0.4            |          | Started | org.ops4j.pax.web-6.0.4 | Provide support of a full WebContainer
pax-http-tomcat     | 6.0.4            |          | Started | org.ops4j.pax.web-6.0.4 | Provide Tomcat support
pax-war-tomcat      | 6.0.4            | x        | Started | org.ops4j.pax.web-6.0.4 |
...
pax-jetty           | 9.3.14.v20161028 |          | Started | org.ops4j.pax.web-6.0.3 | Provide Jetty engine support
pax-http-jetty      | 6.0.3            |          | Started | org.ops4j.pax.web-6.0.3 |
pax-http-whiteboard | 6.0.3            |          | Started | org.ops4j.pax.web-6.0.3 | Provide HTTP Whiteboard pattern support
pax-war             | 6.0.3            |          | Started | org.ops4j.pax.web-6.0.3 | Provide support of a full WebContainer
pax-http-tomcat     | 6.0.3            |          | Started | org.ops4j.pax.web-6.0.3 | Provide Tomcat support

As you can see there are not only the expected features installed (in version 6.0.3), but also the pax-web-jetty and the pax-jetty features. The installed versions are not only 6.0.4 but also 6.0.3.

Does anyone have an idea what is going on here? What do I need to change to avoid installing pax-http-jetty and pax-jetty? Why are actually both versions installed (6.0.4 and 6.0.4)? I could not find any installed feature that depends on pax-http-tomcat in version 6.0.3.

Best regards
Stephan



--
------------------------
Guillaume Nodet


Re: strange issue with karaf-maven-plugin

Posted by Guillaume Nodet <gn...@apache.org>.
When the plugin creates the assembly, it needs to compute what resources
are needed for boot features.  Startup features are pre-installed, so the
resolution happens at build time, however, boot features are resolved at
startup time by the FeaturesService, which means it needs all the input
files.  If you have multiple versions for a given feature, the plugin will
put all the repositories in the assembly, so that the FeaturesService will
be responsible for doing the resolution and choosing which feature to
install.   That can explain why you have multiple versions in the assembly.

I'm not really sure why you would end up with both 6.0.3 and 6.0.4 versions
installed at runtime though.
Could you create a jira and attach a pom to replicate the issue, it may be
worth investigating...

2017-05-30 13:36 GMT+02:00 Siano, Stephan <st...@sap.com>:

> Hi,
>
> one update: After I added the boot following boot features
>                         <feature>pax-war-tomcat/6.0.4</feature>
>                         <feature>pax-http-whiteboard/6.0.4</feature>
>                         <feature>pax-http-tomcat/6.0.4</feature>
>                         <feature>pax-war/6.0.4</feature>
> it works, so I have a workaround for now, however it would be interesting
> to find out why this works.
>
> Best regards
> Stephan
>
> -----Original Message-----
> From: Siano, Stephan [mailto:stephan.siano@sap.com]
> Sent: Dienstag, 30. Mai 2017 11:27
> To: user@karaf.apache.org
> Subject: strange issue with karaf-maven-plugin
>
> Hi,
>
> I am trying to build a custom karaf distribution with the
> karaf-maven-plugin.
>
> In my pom, I have defined compile time dependencies to the framework kar
> and the standard feature xml and runtime dependencies to the framework,
> spring and enterprise feature xmls.
>
> The karaf -maven-plugin defines framework-logback as framework, eventadmin
> as startup feature, wrapper as installed feature, and standard and
> pax-war-tomcat as boot features.
>
> If I do this, everything seems to work as expected, I get a custom
> distribution with logback logger and a tomcat web container:
> ...
> pax-http            | 6.0.3   |          | Started |
> org.ops4j.pax.web-6.0.3 | Implementation of the OSGI HTTP Service
> pax-http-whiteboard | 6.0.3   |          | Started |
> org.ops4j.pax.web-6.0.3 | Provide HTTP Whiteboard pattern support
> pax-war             | 6.0.3   |          | Started |
> org.ops4j.pax.web-6.0.3 | Provide support of a full WebContainer
> pax-http-tomcat     | 6.0.3   |          | Started |
> org.ops4j.pax.web-6.0.3 | Provide Tomcat support
> pax-war-tomcat      | 6.0.3   | x        | Started |
> org.ops4j.pax.web-6.0.3 |
>
> Now I want to change the pax-web version (from 6.0.3 as defined in karaf
> 4.1.1 to 6.0.4). In order to do that, I added the pax-web feature xml in
> version 6.0.4 as a runtime dependency and changed the boot feature from
> "pax-war-tomcat" to "pax-war-tomcat/6.0.4". The resulting distribution is a
> bit weird.
>
> Name                | Version          | Required | State   | Repository
>             | Description
> --------------------+------------------+----------+---------
> +-------------------------+---------------------------------
> -----------------
> pax-jetty           | 9.3.14.v20161028 |          | Started |
> org.ops4j.pax.web-6.0.4 | Provide Jetty engine support
> pax-http-jetty      | 6.0.4            |          | Started |
> org.ops4j.pax.web-6.0.4 |
> pax-http            | 6.0.4            |          | Started |
> org.ops4j.pax.web-6.0.4 | Implementation of the OSGI HTTP Service
> pax-http-whiteboard | 6.0.4            |          | Started |
> org.ops4j.pax.web-6.0.4 | Provide HTTP Whiteboard pattern support
> pax-war             | 6.0.4            |          | Started |
> org.ops4j.pax.web-6.0.4 | Provide support of a full WebContainer
> pax-http-tomcat     | 6.0.4            |          | Started |
> org.ops4j.pax.web-6.0.4 | Provide Tomcat support
> pax-war-tomcat      | 6.0.4            | x        | Started |
> org.ops4j.pax.web-6.0.4 |
> ...
> pax-jetty           | 9.3.14.v20161028 |          | Started |
> org.ops4j.pax.web-6.0.3 | Provide Jetty engine support
> pax-http-jetty      | 6.0.3            |          | Started |
> org.ops4j.pax.web-6.0.3 |
> pax-http-whiteboard | 6.0.3            |          | Started |
> org.ops4j.pax.web-6.0.3 | Provide HTTP Whiteboard pattern support
> pax-war             | 6.0.3            |          | Started |
> org.ops4j.pax.web-6.0.3 | Provide support of a full WebContainer
> pax-http-tomcat     | 6.0.3            |          | Started |
> org.ops4j.pax.web-6.0.3 | Provide Tomcat support
>
> As you can see there are not only the expected features installed (in
> version 6.0.3), but also the pax-web-jetty and the pax-jetty features. The
> installed versions are not only 6.0.4 but also 6.0.3.
>
> Does anyone have an idea what is going on here? What do I need to change
> to avoid installing pax-http-jetty and pax-jetty? Why are actually both
> versions installed (6.0.4 and 6.0.4)? I could not find any installed
> feature that depends on pax-http-tomcat in version 6.0.3.
>
> Best regards
> Stephan
>
>


-- 
------------------------
Guillaume Nodet

RE: strange issue with karaf-maven-plugin

Posted by "Siano, Stephan" <st...@sap.com>.
Hi,

one update: After I added the boot following boot features
                        <feature>pax-war-tomcat/6.0.4</feature>
                        <feature>pax-http-whiteboard/6.0.4</feature>
                        <feature>pax-http-tomcat/6.0.4</feature>
                        <feature>pax-war/6.0.4</feature>
it works, so I have a workaround for now, however it would be interesting to find out why this works.

Best regards
Stephan

-----Original Message-----
From: Siano, Stephan [mailto:stephan.siano@sap.com] 
Sent: Dienstag, 30. Mai 2017 11:27
To: user@karaf.apache.org
Subject: strange issue with karaf-maven-plugin

Hi,

I am trying to build a custom karaf distribution with the karaf-maven-plugin.

In my pom, I have defined compile time dependencies to the framework kar and the standard feature xml and runtime dependencies to the framework, spring and enterprise feature xmls.

The karaf -maven-plugin defines framework-logback as framework, eventadmin as startup feature, wrapper as installed feature, and standard and pax-war-tomcat as boot features.

If I do this, everything seems to work as expected, I get a custom distribution with logback logger and a tomcat web container:
...
pax-http            | 6.0.3   |          | Started | org.ops4j.pax.web-6.0.3 | Implementation of the OSGI HTTP Service
pax-http-whiteboard | 6.0.3   |          | Started | org.ops4j.pax.web-6.0.3 | Provide HTTP Whiteboard pattern support
pax-war             | 6.0.3   |          | Started | org.ops4j.pax.web-6.0.3 | Provide support of a full WebContainer
pax-http-tomcat     | 6.0.3   |          | Started | org.ops4j.pax.web-6.0.3 | Provide Tomcat support
pax-war-tomcat      | 6.0.3   | x        | Started | org.ops4j.pax.web-6.0.3 |

Now I want to change the pax-web version (from 6.0.3 as defined in karaf 4.1.1 to 6.0.4). In order to do that, I added the pax-web feature xml in version 6.0.4 as a runtime dependency and changed the boot feature from "pax-war-tomcat" to "pax-war-tomcat/6.0.4". The resulting distribution is a bit weird.

Name                | Version          | Required | State   | Repository              | Description
--------------------+------------------+----------+---------+-------------------------+--------------------------------------------------
pax-jetty           | 9.3.14.v20161028 |          | Started | org.ops4j.pax.web-6.0.4 | Provide Jetty engine support
pax-http-jetty      | 6.0.4            |          | Started | org.ops4j.pax.web-6.0.4 |
pax-http            | 6.0.4            |          | Started | org.ops4j.pax.web-6.0.4 | Implementation of the OSGI HTTP Service
pax-http-whiteboard | 6.0.4            |          | Started | org.ops4j.pax.web-6.0.4 | Provide HTTP Whiteboard pattern support
pax-war             | 6.0.4            |          | Started | org.ops4j.pax.web-6.0.4 | Provide support of a full WebContainer
pax-http-tomcat     | 6.0.4            |          | Started | org.ops4j.pax.web-6.0.4 | Provide Tomcat support
pax-war-tomcat      | 6.0.4            | x        | Started | org.ops4j.pax.web-6.0.4 |
...
pax-jetty           | 9.3.14.v20161028 |          | Started | org.ops4j.pax.web-6.0.3 | Provide Jetty engine support
pax-http-jetty      | 6.0.3            |          | Started | org.ops4j.pax.web-6.0.3 |
pax-http-whiteboard | 6.0.3            |          | Started | org.ops4j.pax.web-6.0.3 | Provide HTTP Whiteboard pattern support
pax-war             | 6.0.3            |          | Started | org.ops4j.pax.web-6.0.3 | Provide support of a full WebContainer
pax-http-tomcat     | 6.0.3            |          | Started | org.ops4j.pax.web-6.0.3 | Provide Tomcat support

As you can see there are not only the expected features installed (in version 6.0.3), but also the pax-web-jetty and the pax-jetty features. The installed versions are not only 6.0.4 but also 6.0.3.

Does anyone have an idea what is going on here? What do I need to change to avoid installing pax-http-jetty and pax-jetty? Why are actually both versions installed (6.0.4 and 6.0.4)? I could not find any installed feature that depends on pax-http-tomcat in version 6.0.3.

Best regards
Stephan