Hi Achim,
Thanks a lot for your comment, even if I still don't fully understand what
was wrong, I finally got it to work. Maybe you can explain me more...
Even if I did not really understood what you meant by "placing brackets
around them", it made me play with the start level of my bundle and set
higher than 100. I set mine to 500 to make sure they get loader after the
system bundles. And maybe that is what you meant, but I also had to
duplicate the declaration of my features both in "bootFeature" section and
in "startupFeatures". What is the reason for doing so ?
Here is the extract from my pom:
<plugin>
<groupId>org.apache.karaf.tooling</groupId>
<artifactId>karaf-maven-plugin</artifactId>
<configuration>
<javase>1.8</javase>
<bootFeatures>
<feature>wrap</feature>
<feature>aries-blueprint</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>
<feature>dms-content</feature>
<feature>dms-item</feature>
<feature>dms-file</feature>
</bootFeatures>
<installedFeatures>
<feature>wrapper</feature>
</installedFeatures>
<startupFeatures>
<feature>eventadmin</feature>
<feature>dms-content</feature>
<feature>dms-item</feature>
<feature>dms-file</feature>
</startupFeatures>
</configuration>
</plugin>
Thanks a lot!!
Have a very good weekend!
Regards,
Nicolas
On Fri, Feb 19, 2016 at 6:52 PM, Achim Nierbeck <[email protected]>
wrote:
> Hi,
>
> did you set your own bundle also as a boot feature, in that case separate
> the karaf boot features from your own feature by placing brackets around
> them. As you would do with the wrap feature. (See ml for details of that)
> Most likely it's because while your feature is installed the blueprint one
> isn't available yet.
>
> Regards, Achim
>
> sent from mobile device
> Am 19.02.2016 5:29 nachm. schrieb "Nicolas Brasey" <
> [email protected]>:
>
>> Hi Morgan,
>>
>> Thanks for the quick reply!
>>
>> Here is my feature. I use the karaf-maven-plugin to generate it from my
>> pom.xml transitive dependencies:
>>
>> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
>> <features xmlns="http://karaf.apache.org/xmlns/features/v1.4.0"
>> name="dms-content-features">
>>
>> <repository>mvn:org.apache.karaf.features/standard/4.0.4/xml/features</repository>
>>
>> <repository>mvn:org.apache.cxf.karaf/apache-cxf/3.1.2/xml/features</repository>
>> <feature name="dms-content" description="dms-content-features"
>> version="0.0.1.SNAPSHOT">
>> <configfile
>> finalname="/etc/dms.content.cfg">mvn:com.xxx.dms/dms-content-features/0.0.1-SNAPSHOT/cfg</configfile>
>> <feature prerequisite="false" dependency="true">cxf</feature>
>> <feature prerequisite="false"
>> dependency="true">cxf-http-jetty</feature>
>> <bundle
>> start-level="100">mvn:com.xxx.dms/dms-content-core-impl/0.0.1-SNAPSHOT</bundle>
>> <bundle
>> start-level="100">mvn:com.xxx.dms/dms-content-core-api/0.0.1-SNAPSHOT</bundle>
>> <bundle
>> start-level="100">mvn:com.xxx.dms/dms-content-storage-api/0.0.1-SNAPSHOT</bundle>
>> <bundle
>> start-level="100">mvn:com.xxx.dms/dms-model/0.0.1-SNAPSHOT</bundle>
>> <bundle
>> start-level="100">mvn:com.fasterxml.jackson.core/jackson-annotations/2.6.3</bundle>
>> <bundle
>> start-level="100">mvn:com.fasterxml.jackson.core/jackson-databind/2.6.3</bundle>
>> <bundle
>> start-level="100">mvn:com.fasterxml.jackson.core/jackson-core/2.6.3</bundle>
>> <bundle start-level="100">mvn:com.google.guava/guava/18.0</bundle>
>> <bundle
>> start-level="100">mvn:com.xxx.dms/dms-content-rs-cxf/0.0.1-SNAPSHOT</bundle>
>> <bundle
>> start-level="100">mvn:com.xxx.dms/dms-content-rs-api/0.0.1-SNAPSHOT</bundle>
>> <bundle
>> start-level="100">mvn:org.apache.cxf/cxf-rt-frontend-jaxrs/3.1.2</bundle>
>> <bundle
>> start-level="100">mvn:org.apache.cxf/cxf-core/3.1.2</bundle>
>> <bundle
>> start-level="100">mvn:org.codehaus.woodstox/woodstox-core-asl/4.4.1</bundle>
>> <bundle
>> start-level="100">mvn:org.codehaus.woodstox/stax2-api/3.1.4</bundle>
>> <bundle
>> start-level="100">mvn:org.apache.ws.xmlschema/xmlschema-core/2.2.1</bundle>
>> <bundle start-level="100">mvn:javax.ws.rs/javax.ws.rs-api/2.0.1
>> </bundle>
>> <bundle
>> start-level="100">mvn:javax.annotation/javax.annotation-api/1.2</bundle>
>> <bundle
>> start-level="100">mvn:org.apache.cxf/cxf-rt-transports-http/3.1.2</bundle>
>> <bundle
>> start-level="100">mvn:com.xxx.dms/dms-common/0.0.1-SNAPSHOT</bundle>
>> <bundle
>> start-level="100">mvn:com.fasterxml.jackson.jaxrs/jackson-jaxrs-json-provider/2.6.3</bundle>
>> <bundle
>> start-level="100">mvn:com.fasterxml.jackson.jaxrs/jackson-jaxrs-base/2.6.3</bundle>
>> <bundle
>> start-level="100">mvn:com.fasterxml.jackson.module/jackson-module-jaxb-annotations/2.6.3</bundle>
>> <bundle
>> start-level="100">mvn:com.xxx.dms/dms-content-storage-gridfs/0.0.1-SNAPSHOT</bundle>
>> <bundle
>> start-level="100">mvn:org.mongodb/mongo-java-driver/3.0.0</bundle>
>> </feature>
>> </features>
>>
>>
>> As you can see, the feature seems to be correct:
>>
>> <bundle
>> start-level="100">mvn:com.xxx.dms/dms-content-rs-cxf/0.0.1-SNAPSHOT</bundle>
>>
>>
>> The OSGi resolver error message are still a little cryptic for me at the
>> moment, I'm not sure what the resolver is trying the find, but I believe it
>> cannot find blueprint:
>>
>> osgi.wiring.package;
>> filter:="(&(osgi.wiring.package=org.osgi.service.blueprint)(version>=1.0.0)(!(version>=2.0.0)))"]]
>>
>>
>> I cannot figure why as I thought it was embedded in the base karaf
>> features.
>>
>>
>> Thanks again!
>> Nicolas
>>
>>
>>
>>
>> On Fri, Feb 19, 2016 at 4:53 PM, Morgan <[email protected]> wrote:
>>
>>> Nicolas,
>>>
>>> From what I read in your pom. Your feature should look for
>>>
>>> com.xxx.dms/content-rs-cxf/0.0.1.SNAPSHOT
>>>
>>> instead of
>>>
>>> com.xxx.dms.content-rs-cxf/0.0.1.SNAPSHOT
>>>
>>> Regards,
>>> Morgan
>>>
>>> On 2016-02-19 15:46, Nicolas Brasey wrote:
>>>
>>> Hey guys,
>>>
>>> I'm evaluating karaf at the moment to be our middleware runtime for our
>>> product.
>>>
>>> Our solution runs within internal networks with no connection to the
>>> outside world so we need built our custom karaf distribution containing all
>>> the needed bundles already packaged in the system repository.
>>>
>>> I trying to create my own distribution based on the example found on the
>>> documentation, but I can't figure out why the felix resolver cannot resolve
>>> a package:
>>>
>>> Caused by: org.osgi.service.resolver.ResolutionException: Unable to
>>> resolve root: missing requirement [root] osgi.identity;
>>> osgi.identity=dms-content; type=karaf.feature; version=0.0.1.SNAPSHOT;
>>> filter:="(&(osgi.identity=dms-content)(type=karaf.feature)(version>=0.0.1.SNAPSHOT))"
>>> [caused by: Unable to resolve dms-content/0.0.1.SNAPSHOT: missing
>>> requirement [dms-content/0.0.1.SNAPSHOT] osgi.identity;
>>> osgi.identity=com.xxx.dms.content-rs-cxf; type=osgi.bundle;
>>> version="[0.0.1.SNAPSHOT,0.0.1.SNAPSHOT]"; resolution:=mandatory [caused
>>> by: Unable to resolve com.xxx.dms.content-rs-cxf/0.0.1.SNAPSHOT: missing
>>> requirement [com.xxx.dms.content-rs-cxf/0.0.1.SNAPSHOT]
>>> osgi.wiring.package;
>>> filter:="(&(osgi.wiring.package=org.osgi.service.blueprint)(version>=1.0.0)(!(version>=2.0.0)))"]]
>>> at
>>> org.apache.felix.resolver.ResolutionError.toException(ResolutionError.java:42)
>>> at org.apache.felix.resolver.ResolverImpl.resolve(ResolverImpl.java:235)
>>> at org.apache.felix.resolver.ResolverImpl.resolve(ResolverImpl.java:158)
>>> at
>>> org.apache.karaf.features.internal.region.SubsystemResolver.resolve(SubsystemResolver.java:216)
>>> at
>>> org.apache.karaf.features.internal.service.Deployer.deploy(Deployer.java:263)
>>> at org.apache.karaf.profile.assembly.Builder.resolve(Builder.java:1214)
>>> at
>>> org.apache.karaf.profile.assembly.Builder.startupStage(Builder.java:1002)
>>> at
>>> org.apache.karaf.profile.assembly.Builder.doGenerateAssembly(Builder.java:606)
>>> at
>>> org.apache.karaf.profile.assembly.Builder.generateAssembly(Builder.java:389)
>>> at org.apache.karaf.tooling.AssemblyMojo.doExecute(AssemblyMojo.java:392)
>>> at org.apache.karaf.tooling.AssemblyMojo.execute(AssemblyMojo.java:228)
>>> ... 22 more
>>>
>>>
>>>
>>>
>>> Here is the content of the pom.xml:
>>>
>>>
>>> <?xml version="1.0" encoding="UTF-8"?>
>>> <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>
>>>
>>> <parent>
>>> <artifactId>dms-karaf</artifactId>
>>> <groupId>com.xxx.dms</groupId>
>>> <version>0.0.1-SNAPSHOT</version>
>>> </parent>
>>>
>>> <artifactId>dms-karaf-minimal</artifactId>
>>> <packaging>karaf-assembly</packaging>
>>> <name>${project.artifactId}</name>
>>>
>>> <dependencies>
>>> <dependency>
>>> <!-- scope is compile so all features (there is only one)
>>> are installed into startup.properties and the feature repo itself is not
>>> added in etc/org.apache.karaf.features.cfg file -->
>>> <groupId>org.apache.karaf.features</groupId>
>>> <artifactId>framework</artifactId>
>>> <version>4.0.4</version>
>>> <type>kar</type>
>>> </dependency>
>>>
>>> <dependency>
>>> <!-- scope is runtime so the feature repo is listed in
>>> etc/org.apache.karaf.features.cfg file, and features will installed into
>>> the system directory -->
>>> <groupId>org.apache.karaf.features</groupId>
>>> <artifactId>standard</artifactId>
>>> <classifier>features</classifier>
>>> <version>4.0.4</version>
>>> <type>xml</type>
>>> <scope>runtime</scope>
>>> </dependency>
>>>
>>> <dependency>
>>> <!-- scope is runtime so the feature repo is listed in
>>> etc/org.apache.karaf.features.cfg file, and features will installed into
>>> the system directory if specify in the plugin configuration -->
>>> <groupId>com.xxx.dms</groupId>
>>> <artifactId>dms-content-features</artifactId>
>>> <version>${project.version}</version>
>>> <classifier>features</classifier>
>>> <type>xml</type>
>>> <scope>compile</scope>
>>> </dependency>
>>>
>>>
>>> </dependencies>
>>>
>>> <build>
>>> <!-- if you want to include resources in the distribution -->
>>> <resources>
>>> <resource>
>>> <directory>src/main/resources</directory>
>>> <filtering>false</filtering>
>>> <includes>
>>> <include>**/*</include>
>>> </includes>
>>> </resource>
>>> <resource>
>>> <directory>src/main/filtered-resources</directory>
>>> <filtering>true</filtering>
>>> <includes>
>>> <include>**/*</include>
>>> </includes>
>>> </resource>
>>> </resources>
>>>
>>> <plugins>
>>> <!-- if you want to include resources in the distribution -->
>>> <plugin>
>>> <groupId>org.apache.maven.plugins</groupId>
>>> <artifactId>maven-resources-plugin</artifactId>
>>> <version>2.6</version>
>>> <executions>
>>> <execution>
>>> <id>process-resources</id>
>>> <goals>
>>> <goal>resources</goal>
>>> </goals>
>>> </execution>
>>> </executions>
>>> </plugin>
>>>
>>> <!-- karaf-maven-plugin will call both assembly and archive
>>> goals -->
>>> <plugin>
>>> <groupId>org.apache.karaf.tooling</groupId>
>>> <artifactId>karaf-maven-plugin</artifactId>
>>> <configuration>
>>> <javase>1.8</javase>
>>>
>>> <bootFeatures>
>>> <feature>jaas</feature>
>>> <feature>shell</feature>
>>> <feature>ssh</feature>
>>> <feature>management</feature>
>>> <feature>bundle</feature>
>>> <feature>config</feature>
>>> <feature>deployer</feature>
>>> <feature>diagnostic</feature>
>>> <feature>instance</feature>
>>> <feature>kar</feature>
>>> <feature>log</feature>
>>> <feature>package</feature>
>>> <feature>service</feature>
>>> <feature>system</feature>
>>> <feature>aries-blueprint</feature>
>>> <feature>dms-content</feature>
>>> </bootFeatures>
>>>
>>> </configuration>
>>> </plugin>
>>> </plugins>
>>> </build>
>>> </project>
>>>
>>>
>>>
>>> Thanks a lot!
>>>
>>> Nicolas
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>