Hi,

As reminder, it's documented here:
https://karaf.apache.org/manual/latest/#_instances_and_distributions_goals

Especially you can see:

startupFeatures | List<String> | List of features from compile-scope
features XML files and KARs to be installed into system repo and
listed in etc/startup.properties.
bootFeatures | List<String> | List of features from runtime-scope
features XML files and KARs to be installed into system repo and
listed in featuresBoot property in etc/org.apache.karaf.features.cfg

Regards
JB

On Thu, Nov 3, 2022 at 12:47 PM Grzegorz Grzybek <[email protected]> wrote:
>
> Hello
>
>> When I tried to replace the <startupFeatures> with <bootFeatures> Karaf 
>> failed to start (the log file is completely empty).
>
>
> In previous email I didn't explain enough about the difference. What I said 
> could be confusing, though it's true:
>
> compile scoped dependencies and/or features declared in <startupFeatures> are 
> effectively replaced by a list of bundles and put into etc/startup.properties
> runtime scoped dependencies and/or features declared in <bootFeatures> are 
> declared in "featuresBoot" property in etc/org.apache.karaf.features.cfg
>
> In both cases, you get your dependencies in "system/" directory of your 
> custom distro.
>
> What I didn't mention is that you actually need _some_ features to be 
> startupFeatures - most importantly the "feature" feature ;) The point is that 
> in order to install features (from etc/org.apache.karaf.features.cfg) you 
> need a bundle running that reads this file, so this bundle 
> (org.apache.karaf.features.core) needs to be installed directly - from 
> etc/startup.properties.
>
> Please have a look at the configuration of karaf-maven-plugin of the Apache 
> Karaf distro itself: 
> https://github.com/apache/karaf/blob/karaf-4.4.2/assemblies/apache-karaf/pom.xml
> While "feature" feature is not a startup feature, there's compile-scoped 
> dependency:
>
>         <dependency>
>             <groupId>org.apache.karaf.features</groupId>
>             <artifactId>framework</artifactId>
>             <type>kar</type>
>         </dependency>
>
> it (through a bit complex stages) installs a startup feature called 
> "framework" which includes the org.apache.karaf.features.core bundle as 
> startup bundle.
> You're using "framework-logback" variant of this feature and it has to be 
> kept as startupFeature.
>
> regards
> Grzegorz Grzybek
>
> czw., 3 lis 2022 o 12:35 Martin Zukal via user <[email protected]> 
> napisał(a):
>>
>> Hello,
>>
>> To be honest I am confused about the <startupFeatures> and <bootFeatures>. I 
>> followed the documentation here: 
>> https://svn.apache.org/repos/asf/karaf/site/production/manual/latest/custom-distribution.html#_plugin_configuration
>>  but it did not work the way I expected. I am trying to build a custom Karaf 
>> distribution which should resolve all artifacts locally (not in the maven 
>> repository). The idea is to have all artifacts needed by Karaf itself in the 
>> <KARAF_HOME>/system directory and all artifacts required by my application 
>> in a new directory <KARAF_HOME>/repository. I firstly build the „bare“ karaf 
>> and then I add the repository directory (which is generated using 
>> karaf-maven-plugin but using the <goal>features-add-to-repository</goal> 
>> based on my feature.xml file )
>>
>> I created the following pom.xml:
>>
>>
>>
>> <project xmlns=http://maven.apache.org/POM/4.0.0
>>
>>                 xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
>>
>>                 xsi:schemaLocation=http://maven.apache.org/POM/4.0.0 
>> http://maven.apache.org/xsd/maven-4.0.0.xsd>
>>
>>                 <modelVersion>4.0.0</modelVersion>
>>
>>
>>
>>
>>
>>                 <groupId>ch.stabilit</groupId>
>>
>>                 <artifactId>apache-karaf-STABILIT</artifactId>
>>
>>                 <version>4.4.1</version>
>>
>>                 <name>Apache Karaf distribution</name>
>>
>>                 <packaging>karaf-assembly</packaging>
>>
>>
>>
>>
>>
>>                 <properties>
>>
>>                                <karaf.version>4.4.1</karaf.version>
>>
>>                 </properties>
>>
>>
>>
>>                 <dependencies>
>>
>>                                <dependency>
>>
>>                                                
>> <groupId>org.apache.karaf.features</groupId>
>>
>>                                                
>> <artifactId>framework</artifactId>
>>
>>                                                
>> <version>${karaf.version}</version>
>>
>>                                                <type>kar</type>
>>
>>                                </dependency>
>>
>>                                <dependency>
>>
>>                                                
>> <groupId>org.apache.karaf.features</groupId>
>>
>>                                                
>> <artifactId>framework</artifactId>
>>
>>                                                
>> <version>${karaf.version}</version>
>>
>>                                                
>> <classifier>features</classifier>
>>
>>                                                <type>xml</type>
>>
>>                                                <scope>runtime</scope>
>>
>>                                </dependency>
>>
>>                                <dependency>
>>
>>                                                
>> <groupId>org.apache.karaf.features</groupId>
>>
>>                                                
>> <artifactId>standard</artifactId>
>>
>>                                                
>> <version>${karaf.version}</version>
>>
>>                                                
>> <classifier>features</classifier>
>>
>>                                                <type>xml</type>
>>
>>                                                <scope>runtime</scope>
>>
>>                                </dependency>
>>
>>                 </dependencies>
>>
>>
>>
>>                 <build>
>>
>>                                <plugins>
>>
>>                                                <plugin>
>>
>>                                                                
>> <groupId>org.apache.karaf.tooling</groupId>
>>
>>                                                                
>> <artifactId>karaf-maven-plugin</artifactId>
>>
>>                                                                
>> <version>${karaf.version}</version>
>>
>>                                                                
>> <extensions>true</extensions>
>>
>>                                                                <executions>
>>
>>                                                                              
>>   <execution>
>>
>>                                                                              
>>                  <id>assembly</id>
>>
>>                                                                              
>>                  <phase>prepare-package</phase>
>>
>>                                                                              
>>                  <goals>
>>
>>                                                                              
>>                                  <goal>assembly</goal>
>>
>>                                                                              
>>                  </goals>
>>
>>                                                                              
>>   </execution>
>>
>>                                                                </executions>
>>
>>                                                                
>> <configuration>
>>
>>                                                                              
>>   <bootRepositories>
>>
>>                                                                              
>>                   
>> <bootRepository>mvn:org.apache.karaf.features/spring/${karaf.version}/xml/features</bootRepository>
>>
>>                                                                              
>>                   
>> <bootRepository>mvn:org.apache.karaf.features/specs/${karaf.version}/xml/features</bootRepository>
>>
>>                                                                              
>>                   
>> <bootRepository>mvn:org.apache.karaf.features/enterprise/${karaf.version}/xml/features</bootRepository>
>>
>>                                                                              
>>   </bootRepositories>
>>
>>                                                                              
>>   <startupFeatures>
>>
>>                                                                              
>>                  <startupFeature>framework-logback</startupFeature>
>>
>>                                                                              
>>                  <startupFeature>instance</startupFeature>
>>
>>                                                                              
>>                  <startupFeature>package</startupFeature>
>>
>>                                                                              
>>                  <startupFeature>log</startupFeature>
>>
>>                                                                              
>>                  <startupFeature>ssh</startupFeature>
>>
>>                                                                              
>>                  <startupFeature>system</startupFeature>
>>
>>                                                                              
>>                  <startupFeature>feature</startupFeature>
>>
>>                                                                              
>>                  <startupFeature>shell</startupFeature>
>>
>>                                                                              
>>                  <startupFeature>management</startupFeature>
>>
>>                                                                              
>>                  <startupFeature>service</startupFeature>
>>
>>                                                                              
>>                  <startupFeature>jaas</startupFeature>
>>
>>                                                                              
>>                  <startupFeature>deployer</startupFeature>
>>
>>                                                                              
>>                  <startupFeature>diagnostic</startupFeature>
>>
>>                                                                              
>>                  <startupFeature>wrap</startupFeature>
>>
>>                                                                              
>>                  <startupFeature>bundle</startupFeature>
>>
>>                                                                              
>>                  <startupFeature>config</startupFeature>
>>
>>                                                                              
>>                  <startupFeature>webconsole</startupFeature>
>>
>>                                                                              
>>                  <startupFeature>pax-web-http-tomcat</startupFeature>
>>
>>                                                                              
>>   </startupFeatures>
>>
>>                                                                              
>>   <useReferenceUrls>true</useReferenceUrls>
>>
>>                                                                              
>>   <installAllFeaturesByDefault>false</installAllFeaturesByDefault>
>>
>>                                                                              
>>   <framework>framework-logback</framework>
>>
>>                                                                              
>>   <archiveTarGz>false</archiveTarGz>
>>
>>                                                                              
>>   <propertyEdits>
>>
>>                                                                              
>>                  <edits>
>>
>>                                                                              
>>                                  <edit>
>>
>>                                                                              
>>                                                  
>> <file>config.properties</file>
>>
>>                                                                              
>>                                                  <operation>
>>
>>                                                                              
>>                                                                  
>> <operation>put</operation>
>>
>>                                                                              
>>                                                  </operation>
>>
>>                                                                              
>>                                                  <key>karaf.framework</key>
>>
>>                                                                              
>>                                                  <value>equinox</value>
>>
>>                                                                              
>>                                  </edit>
>>
>>                                                                              
>>                                  <edit>
>>
>>                                                                              
>>                                                  
>> <file>config.properties</file>
>>
>>                                                                              
>>                                                  <operation>
>>
>>                                                                              
>>                                                                  
>> <operation>extend</operation>
>>
>>                                                                              
>>                                                  </operation>
>>
>>                                                                              
>>                                                  
>> <key>org.osgi.framework.system.packages</key>
>>
>>                                                                              
>>                                                  
>> <value>com.sun.jndi.ldap</value>
>>
>>                                                                              
>>                                  </edit>
>>
>>                                                                              
>>                                  <edit>
>>
>>                                                                              
>>                                                  
>> <file>config.properties</file>
>>
>>                                                                              
>>                                                  <operation>
>>
>>                                                                              
>>                                                                  
>> <operation>extend</operation>
>>
>>                                                                              
>>                                                  </operation>
>>
>>                                                                              
>>                                                  
>> <key>org.osgi.framework.system.packages</key>
>>
>>                                                                              
>>                                                  
>> <value>com.sun.jndi.url.ldap</value>
>>
>>                                                                              
>>                                  </edit>
>>
>>                                                                              
>>                                  <edit>
>>
>>                                                                              
>>                                                  
>> <file>config.properties</file>
>>
>>                                                                              
>>                                                  <operation>
>>
>>                                                                              
>>                                                                  
>> <operation>extend</operation>
>>
>>                                                                              
>>                                                  </operation>
>>
>>                                                                              
>>                                                  
>> <key>org.osgi.framework.bootdelegation</key>
>>
>>                                                                              
>>                                                  <value> 
>> com.sun.jndi.ldap.*</value>
>>
>>                                                                              
>>                                  </edit>
>>
>>                                                                              
>>                                  <edit>
>>
>>                                                                              
>>                                                  
>> <file>users.properties</file>
>>
>>                                                                              
>>                                                  <operation>
>>
>>                                                                              
>>                                                                  
>> <operation>put</operation>
>>
>>                                                                              
>>                                                  </operation>
>>
>>                                                                              
>>                                                  <key>_g_:admingroup</key>
>>
>>                                                                              
>>                                                  
>> <value>group,admin,manager,viewer,systembundles,ssh</value>
>>
>>                                                                              
>>                                  </edit>
>>
>>                                                                              
>>                                  <edit>
>>
>>                                                                              
>>                                                  
>> <file>users.properties</file>
>>
>>                                                                              
>>                                                  <operation>
>>
>>                                                                              
>>                                                                  
>> <operation>put</operation>
>>
>>                                                                              
>>                                                  </operation>
>>
>>                                                                              
>>                                                  <key>karaf</key>
>>
>>                                                                              
>>                                                  
>> <value>karaf,_g_:admingroup</value>
>>
>>                                                                              
>>                                  </edit>
>>
>>                                                                              
>>                                  <edit>
>>
>>                                                                              
>>                                                  
>> <file>org.ops4j.pax.logging.cfg</file>
>>
>>                                                                              
>>                                                  <operation>
>>
>>                                                                              
>>                                                                  
>> <operation>put</operation>
>>
>>                                                                              
>>                                                  </operation>
>>
>>                                                                              
>>                                                  
>> <key>org.ops4j.pax.logging.logback.config.file</key>
>>
>>                                                                              
>>                                                  
>> <value>${karaf.base}/configuration/serviceability.xml</value>
>>
>>                                                                              
>>                                  </edit>
>>
>>                                                                              
>>                                  <edit>
>>
>>                                                                              
>>                                                  
>> <file>system.properties</file>
>>
>>                                                                              
>>                                                  <operation>
>>
>>                                                                              
>>                                                                  
>> <operation>put</operation>
>>
>>                                                                              
>>                                                  </operation>
>>
>>                                                                              
>>                                                  <key>karaf.clean.all</key>
>>
>>                                                                              
>>                                                  <value>true</value>
>>
>>                                                                              
>>                                  </edit>
>>
>>                                                                              
>>                                  <edit>
>>
>>                                                                              
>>                                                  
>> <file>org.ops4j.pax.web.cfg</file>
>>
>>                                                                              
>>                                                  <operation>
>>
>>                                                                              
>>                                                                  
>> <operation>put</operation>
>>
>>                                                                              
>>                                                  </operation>
>>
>>                                                                              
>>                                                  
>> <key>org.osgi.service.http.port</key>
>>
>>                                                                              
>>                                                  <value>8080</value>
>>
>>                                                                              
>>                                  </edit>
>>
>>                                                                              
>>                                  <edit>
>>
>>                                                                              
>>                                                  
>> <file>org.ops4j.pax.url.mvn.cfg</file>
>>
>>                                                                              
>>                                                  <operation>
>>
>>                                                                              
>>                                                                  
>> <operation>put</operation>
>>
>>                                                                              
>>                                                  </operation>
>>
>>                                                                              
>>                                                  
>> <key>org.ops4j.pax.url.mvn.localRepository</key>
>>
>>                                                                              
>>                                                  
>> <value>${karaf.base}/repository</value>
>>
>>                                                                              
>>                                  </edit>
>>
>>                                                                              
>>                                  <edit>
>>
>>                                                                              
>>                                                  
>> <file>org.ops4j.pax.url.mvn.cfg</file>
>>
>>                                                                              
>>                                                  <operation>
>>
>>                                                                              
>>                                                                  
>> <operation>put</operation>
>>
>>                                                                              
>>                                                  </operation>
>>
>>                                                                              
>>                                                  
>> <key>org.ops4j.pax.url.mvn.defaultLocalRepoAsRemote</key>
>>
>>                                                                              
>>                                                  <value>true</value>
>>
>>                                                                              
>>                                  </edit>
>>
>>                                                                              
>>                                  <edit>
>>
>>                                                                              
>>                                                  
>> <file>org.ops4j.pax.url.mvn.cfg</file>
>>
>>                                                                              
>>                                                  <operation>
>>
>>                                                                              
>>                                                                  
>> <operation>put</operation>
>>
>>                                                                              
>>                                                  </operation>
>>
>>                                                                              
>>                                                  
>> <key>org.ops4j.pax.url.mvn.repositories</key>
>>
>>                                                                              
>>                                                  
>> <value>${karaf.home.uri}repository@id=local.repository@snapshots</value>
>>
>>                                                                              
>>                                  </edit>
>>
>>                                                                              
>>                  </edits>
>>
>>                                                                              
>>   </propertyEdits>
>>
>>                                                                
>> </configuration>
>>
>>
>>
>>                                                </plugin>
>>
>>                                </plugins>
>>
>>                 </build>
>>
>> </project>
>>
>>
>>
>> With which I am able to build Karaf distribution which satisfies all my 
>> requirements.
>>
>>
>>
>> You wrote that using startupFeatures will create a large startup.properties 
>> file. This is something I don’t observe. My startup.properties looks like 
>> this:
>>
>> # Bundles to be started on startup, with startlevel
>>
>> reference\:file\:org/apache/karaf/features/org.apache.karaf.features.extension/4.4.1/org.apache.karaf.features.extension-4.4.1.jar
>>  = 1
>>
>> reference\:file\:org/ops4j/pax/url/pax-url-aether/2.6.11/pax-url-aether-2.6.11.jar
>>  = 5
>>
>> reference\:file\:org/ops4j/pax/logging/pax-logging-logback/2.1.3/pax-logging-logback-2.1.3.jar
>>  = 8
>>
>> reference\:file\:org/ops4j/pax/logging/pax-logging-api/2.1.3/pax-logging-api-2.1.3.jar
>>  = 8
>>
>> reference\:file\:org/osgi/org.osgi.util.function/1.2.0/org.osgi.util.function-1.2.0.jar
>>  = 9
>>
>> reference\:file\:org/osgi/org.osgi.util.promise/1.2.0/org.osgi.util.promise-1.2.0.jar
>>  = 9
>>
>> reference\:file\:org/apache/felix/org.apache.felix.coordinator/1.0.2/org.apache.felix.coordinator-1.0.2.jar
>>  = 9
>>
>> reference\:file\:org/apache/felix/org.apache.felix.converter/1.0.14/org.apache.felix.converter-1.0.14.jar
>>  = 9
>>
>> reference\:file\:org/apache/felix/org.apache.felix.configadmin/1.9.24/org.apache.felix.configadmin-1.9.24.jar
>>  = 10
>>
>> reference\:file\:org/apache/felix/org.apache.felix.configurator/1.0.14/org.apache.felix.configurator-1.0.14.jar
>>  = 11
>>
>> reference\:file\:org/apache/sling/org.apache.sling.commons.johnzon/1.2.14/org.apache.sling.commons.johnzon-1.2.14.jar
>>  = 11
>>
>> reference\:file\:org/apache/felix/org.apache.felix.configadmin.plugin.interpolation/1.2.4/org.apache.felix.configadmin.plugin.interpolation-1.2.4.jar
>>  = 11
>>
>> reference\:file\:org/apache/felix/org.apache.felix.cm.json/1.0.6/org.apache.felix.cm.json-1.0.6.jar
>>  = 11
>>
>> reference\:file\:org/apache/felix/org.apache.felix.fileinstall/3.7.4/org.apache.felix.fileinstall-3.7.4.jar
>>  = 12
>>
>> reference\:file\:org/apache/karaf/features/org.apache.karaf.features.core/4.4.1/org.apache.karaf.features.core-4.4.1.jar
>>  = 15
>>
>>
>>
>> When I tried to replace the <startupFeatures> with <bootFeatures> Karaf 
>> failed to start (the log file is completely empty).
>>
>> I would really appreciate if you could point me to a good documentation on 
>> startupFeatures and bootFeatures.
>>
>>
>>
>> Best regards
>>
>> Martin Zukal
>>
>>
>>
>> From: Grzegorz Grzybek <[email protected]>
>> Sent: Thursday, November 3, 2022 11:04 AM
>> To: [email protected]; Martin Zukal <[email protected]>
>> Subject: Re: webconsole and pax-web-http-tomcat
>>
>>
>>
>> Hi
>>
>>
>>
>> about "pax-web-http-jetty", just get rid of 
>> "<startupFeature>http</startupFeature>" because it's quite legacy/convenient 
>> feature defined like this:
>>
>>
>>
>>     <feature name="http" description="Transition feature for backward 
>> compatibility" version="8.0.6">
>>         <feature>pax-web-http</feature>
>>     </feature>
>>
>>
>>
>> and "pax-web-http" (notice that the feature name doesn't specify the runtime 
>> to choose: jetty, tomcat or undertow) is:
>>
>>
>>
>>     <feature name="pax-web-http" description="Pax Web OSGi HTTP Service" 
>> version="8.0.6">
>>         <feature>pax-web-http-jetty</feature>
>>         <bundle 
>> start-level="30">mvn:org.apache.karaf.http/org.apache.karaf.http.core/4.4.1</bundle>
>>         <capability>http-service;provider:=pax-http</capability>
>>         <conditional>
>>             <condition>webconsole</condition>
>>             <bundle 
>> start-level="30">mvn:org.apache.karaf.webconsole/org.apache.karaf.webconsole.http/4.4.1</bundle>
>>         </conditional>
>>     </feature>
>>
>>
>>
>> So you just need "pax-web-http-tomcat" (or "pax-web-http-jetty" or 
>> "pax-web-http-undertow") specified explicitly.
>>
>>
>>
>> Webconsole is listed in the bootFeatures (see above). […]
>>
>>
>>
>> Actually, it's specified in <startupFeatures> :) that's big difference - 
>> you're effectively doing (karaf-maven-plugin is doing) the resolution at 
>> build time, so you simply get a big list of bundles inside 
>> etc/startup.properties. This makes uninstalling the features a bit harder.
>>
>> In other words - "<startupFeatures>" vs. "<bootFeatures>"  is like bundle vs 
>> feature. With "startup features" you're "flattening" the features into a 
>> list of bundles. It may speed things up, but generally I'm not recommending 
>> it.
>>
>>
>>
>> And finally, to see what's the problem, you can increase logging level of 
>> "org.ops4j.pax.web.extender.war" (to DEBUG or even TRACE) to get a lot of 
>> information about ServletContainerInitializers and annotated classes being 
>> discovered.
>>
>>
>>
>> I still hope that removing pax-web-http-jetty (by not including "http" 
>> feature) will solve your problem.
>>
>>
>>
>> regards
>>
>> Grzegorz Grzybek
>>
>>
>>
>>
>>
>> czw., 3 lis 2022 o 10:36 Martin Zukal via user <[email protected]> 
>> napisał(a):
>>
>> Hello and thank you for a quick response!
>>
>> Sorry, I forgot to include the versions. I am running Apache Karaf 4.4.1 
>> which comes with Pax Web 8.0.6.
>>
>> I looked at the samples and they already helped me a lot but I will look at 
>> them once again, maybe I missed something. Basically, I followed: 
>> https://github.com/ops4j/org.ops4j.pax.web/blob/web-8.0.11/samples/samples-jsf/war-primefaces-wired/pom.xml
>>
>>
>>
>>
>>
>> You actually don't uninstall features using karaf-maven-plugin - you declare 
>> features you want, and karaf-maven-plugin will put the features into boot 
>> features (etc/org.apache.karaf.features.cfg - when in runtime scope) or into 
>> startup bundles (etc/startup.properties - when in compile scope). So 
>> definitely you have to fix your <configuration> for karaf-maven-plugin.
>>
>>
>>
>> I have the following dependencies in my pom.xml (used to build custom Karaf 
>> distribution)
>>
>> <dependency>
>>
>>                                                
>> <groupId>org.apache.karaf.features</groupId>
>>
>>                                                
>> <artifactId>framework</artifactId>
>>
>>                                                
>> <version>${karaf.version}</version>
>>
>>                                                <type>kar</type>
>>
>>                                </dependency>
>>
>>                                <dependency>
>>
>>                                                
>> <groupId>org.apache.karaf.features</groupId>
>>
>>                                                
>> <artifactId>framework</artifactId>
>>
>>                                                
>> <version>${karaf.version}</version>
>>
>>                                                
>> <classifier>features</classifier>
>>
>>                                                <type>xml</type>
>>
>>                                                <scope>runtime</scope>
>>
>>                                </dependency>
>>
>>                                <dependency>
>>
>>                                                
>> <groupId>org.apache.karaf.features</groupId>
>>
>>                                                
>> <artifactId>standard</artifactId>
>>
>>                                                
>> <version>${karaf.version}</version>
>>
>>                                                
>> <classifier>features</classifier>
>>
>>                                                <type>xml</type>
>>
>>                                                <scope>runtime</scope>
>>
>>                                </dependency>
>>
>> And I listed the following features in startupFeatures:
>>
>> <startupFeatures>
>>
>>                                                                              
>>                  <startupFeature>framework-logback</startupFeature>
>>
>>                                                                              
>>                  <startupFeature>instance</startupFeature>
>>
>>                                                                              
>>                  <startupFeature>package</startupFeature>
>>
>>                                                                              
>>                  <startupFeature>log</startupFeature>
>>
>>                                                                              
>>                  <startupFeature>ssh</startupFeature>
>>
>>                                                                              
>>                  <startupFeature>system</startupFeature>
>>
>>                                                                              
>>                  <startupFeature>feature</startupFeature>
>>
>>                                                                              
>>                  <startupFeature>shell</startupFeature>
>>
>>                                                                              
>>                  <startupFeature>management</startupFeature>
>>
>>                                                                              
>>                  <startupFeature>service</startupFeature>
>>
>>                                                                              
>>                  <startupFeature>jaas</startupFeature>
>>
>>                                                                              
>>                  <startupFeature>deployer</startupFeature>
>>
>>                                                                              
>>                  <startupFeature>diagnostic</startupFeature>
>>
>>                                                                              
>>                  <startupFeature>wrap</startupFeature>
>>
>>                                                                              
>>                  <startupFeature>bundle</startupFeature>
>>
>>                                                                              
>>                  <startupFeature>config</startupFeature>
>>
>>                                                                              
>>                  <startupFeature>http</startupFeature>
>>
>>                                                                              
>>                  <startupFeature>webconsole</startupFeature>
>>
>>                                                                              
>>                  <startupFeature>pax-web-http-tomcat</startupFeature>
>>
>>                                                                              
>>   </startupFeatures>
>>
>> This results in the above declared features listed in bootFeatures in 
>> etc/org.apache.karaf.features.cfg.
>>
>> When I start Karaf with this set up without my application the webconsole 
>> works fine and I can see the following on the features page:
>>
>> pax-web-http-jetty         8.0.6      org.ops4j.pax.web-8.0.6              
>> Installed
>>
>> pax-web-http-tomcat    8.0.6      org.ops4j.pax.web-8.0.6              
>> Installed
>>
>> Therefore I asked whether it i possible to uninstall pax-web-http-jetty.
>>
>>
>>
>> 2nd - how do you install the webconsole and/or your JSF bundle? Are then 
>> installed as WAR (WAB) files? May I see them? I don't claim that the problem 
>> is only at your side - maybe Pax Web didn't anticpate some setup and I'd be 
>> happy to help solving this problem.
>>
>>
>>
>> Webconsole is listed in the bootFeatures (see above). My application 
>> consists of a lot of bundles but the one with the UI is a WAB (war packaging 
>> with manifest which includes: Web-ContextPath: /main). Primefaces and JSF 
>> are wired using the Require-Bundle header in manifest:
>>
>> <Require-Bundle>
>>
>> javax.faces-api,
>>
>> org.primefaces
>>
>> </Require-Bundle>
>>
>> All the bundles and their dependencies (JSF, primefaces etc.) are listed in 
>> a feature.xml file which I place in the deploy directory in Karaf. The 
>> application loads and works fine. I am just having problem with the 
>> webconsole.
>>
>> I unfortunately cannot share the code of the bundles. But I am happy to 
>> provide more information if necessary.
>>
>>
>>
>> Let me know if you need more information.
>>
>> Best regards
>>
>> Martin Zukal
>>
>>
>>
>>
>>
>> From: Grzegorz Grzybek <[email protected]>
>> Sent: Thursday, November 3, 2022 9:56 AM
>> To: [email protected]; Martin Zukal <[email protected]>
>> Subject: Re: webconsole and pax-web-http-tomcat
>>
>>
>>
>> Hello
>>
>>
>>
>> First - which Karaf version are you using?
>>
>> Assuming it's Karaf 4.4.x with Pax Web 8.0.x I can try helping.
>>
>>
>>
>> Pax Web 8 is highly refactored major version of the project where we've 
>> tried to make sure that things like JSF (which rely heavily on 
>> ServletContainerInitializers) work smoothly.
>>
>> There are dedicated tests both for webconsole and for JSF (MyFaces, 
>> Primefaces) and even for techs like Vaadin.
>>
>>
>>
>> Check the JSF samples at 
>> https://github.com/ops4j/org.ops4j.pax.web/tree/web-8.0.11/samples/samples-jsf
>>
>>
>>
>> Is it possible that the behavior is caused by conflict between 
>> pax-web-http-jetty and pax-web-http-tomcat? Is there a way how to uninstall 
>> pax-web-http-jetty using karaf-maven-plugin?
>>
>>
>>
>> You actually don't uninstall features using karaf-maven-plugin - you declare 
>> features you want, and karaf-maven-plugin will put the features into boot 
>> features (etc/org.apache.karaf.features.cfg - when in runtime scope) or into 
>> startup bundles (etc/startup.properties - when in compile scope). So 
>> definitely you have to fix your <configuration> for karaf-maven-plugin.
>>
>>
>>
>> 2nd - how do you install the webconsole and/or your JSF bundle? Are then 
>> installed as WAR (WAB) files? May I see them? I don't claim that the problem 
>> is only at your side - maybe Pax Web didn't anticpate some setup and I'd be 
>> happy to help solving this problem.
>>
>>
>>
>> kind regards
>>
>> Grzegorz Grzybek
>>
>>
>>
>> czw., 3 lis 2022 o 09:46 Martin Zukal via user <[email protected]> 
>> napisał(a):
>>
>> Hello everyone,
>> I am experiencing strange behavior with webconsole of Apache Karaf. I have 
>> an application deployed using a custom feature file in Apache Karaf. The 
>> application is based on Spring and is using Primefaces (and Mojarra JSF 
>> implementation version 2.2.15). When I run it with standard war feature 
>> (which by default installs pax-web-http-jetty) I am getting the following 
>> error messages in the log file:
>> Unable to obtain InjectionProvider from init time FacesContext. Does this 
>> container implement the Mojarra Injection SPI?
>> Unable to inject com.sun.faces.application.ApplicationFactoryImpl@5005965f 
>> because no InjectionProvider can be found. Does this container implement the 
>> Mojarra Injection SPI?
>> However, the webconsole works perfectly in this case.
>> When I install the pax-web-http-tomcat feature the above mentioned error 
>> messages are gone but the webconsole is not working properly (the resources 
>> from res and lib are not loaded so I see allmost an empty page - see 
>> attachment).
>> I can see the following errors in the log file:
>>
>> [2022-11-03 09:29:26.358] INFO  tp-nio2-0.0.0.0-8080-exec-10 
>> o.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/]  Marking 
>> servlet [default-56ee4de3-f9f8-44c8-96ea-4580393e6469] as unavailable
>> [2022-11-03 09:29:26.360] ERROR tp-nio2-0.0.0.0-8080-exec-10 
>> o.a.c.c.C.[.[.[/].[default-56ee4de3-f9f8-44c8-96ea-4580393e6469] Allocate 
>> exception for servlet [default-56ee4de3-f9f8-44c8-96ea-4580393e6469] 
>> javax.servlet.UnavailableException: No static resources were found
>>         at 
>> org.apache.catalina.servlets.DefaultServlet.init(DefaultServlet.java:384)
>>         at 
>> org.ops4j.pax.web.service.tomcat.internal.web.TomcatResourceServlet.init(TomcatResourceServlet.java:87)
>>         at javax.servlet.GenericServlet.init(GenericServlet.java:180)
>>         at 
>> org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1164)
>>         at 
>> org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:804)
>>         at 
>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:128)
>>         at 
>> org.ops4j.pax.web.service.tomcat.internal.PaxWebStandardWrapperValve.invoke(PaxWebStandardWrapperValve.java:50)
>>         at 
>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
>>         at 
>> org.ops4j.pax.web.service.tomcat.internal.PaxWebStandardContextValve.invoke(PaxWebStandardContextValve.java:98)
>>         at 
>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)
>>         at 
>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
>>         at 
>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
>>         at 
>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360)
>>         at 
>> org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399)
>>         at 
>> org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
>>         at 
>> org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:890)
>>         at 
>> org.apache.tomcat.util.net.Nio2Endpoint$SocketProcessor.doRun(Nio2Endpoint.java:1701)
>>         at 
>> org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
>>         at 
>> org.apache.tomcat.util.net.AbstractEndpoint.processSocket(AbstractEndpoint.java:1190)
>>         at 
>> org.apache.tomcat.util.net.Nio2Endpoint$Nio2SocketWrapper$2.completed(Nio2Endpoint.java:633)
>>         at 
>> org.apache.tomcat.util.net.Nio2Endpoint$Nio2SocketWrapper$2.completed(Nio2Endpoint.java:611)
>>         at java.base/sun.nio.ch.Invoker.invokeUnchecked(Unknown Source)
>>         at java.base/sun.nio.ch.Invoker$2.run(Unknown Source)
>>         at java.base/sun.nio.ch.AsynchronousChannelGroupImpl$1.run(Unknown 
>> Source)
>>         at 
>> org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
>>         at 
>> org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
>>         at 
>> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
>>         at java.base/java.lang.Thread.run(Unknown Source)
>>
>>
>> Does it mean that the webconsole works only with pax-web-http-jetty?
>>
>> I can also see that both pax-web-http-jetty and pax-web-http-tomcat features 
>> are installed. Is it possible that the behavior is caused by conflict 
>> between pax-web-http-jetty and pax-web-http-tomcat? Is there a way how to 
>> uninstall pax-web-http-jetty using karaf-maven-plugin?
>> Any help with this issue will be appreciated.
>>
>> Best regards
>> Martin Zukal
>>


Reply via email to