Table of Contents
Service Directory Demo
Working with karaf
Quickstart Deployment
Compile karaf-distribution moudle or using the version downloaded.
Important Disable capability checking:
vim target/assembly/etc/org.apache.karaf.features.cfg serviceRequirements=disable
./karaf_dir/bin/karaf clean
Add repo:
feature:repo-add mvn:com.gtarc.servicedirectory/sd-feature/1.0.0/xml/features
Troubleshooting
Heapsize
export JAVA_MAX_MEM=3G export JAVA_MIN_MEM=3G
see: karaf/bin/setenv
Karaf feature dependencies
karaf@root()> feature:install sd-all-test 15:52:16 Error executing command: Unable to resolve root: missing requirement [root] osgi.identity; osgi.identity=sd-all-test; type=karaf.feature; version="[1.0.0,1.0.0]"; filter:="(&(osgi.identity=sd-all-test)(type=karaf.feature)(version>=1.0.0)(version<=1.0.0))" [caused by: Unable to resolve sd-all-test/1.0.0: missing requirement [sd-all-test/1.0.0] osgi.identity; osgi.identity=sd-server; type=karaf.feature [caused by: Unable to resolve sd-server/1.0.0: missing requirement [sd-server/1.0.0] osgi.identity; osgi.identity=sd-rest; type=osgi.bundle; version="[1.0.0,1.0.0]"; resolution:=mandatory [caused by: Unable to resolve sd-rest/1.0.0: missing requirement [sd-rest/1.0.0] osgi.wiring.package; filter:="(&(osgi.wiring.package=com.fasterxml.jackson.annotation)(version>=1.0.0)(!(version>=2.0.0)))"]]]
Our bundle can not load a dependent bundle (fasterxml).
Solution:
1. Check feature if the bundle dependency is declared:
<feature name="sd-server" version="${pom.version}">
<!--
<feature>http</feature>
-->
<feature>http-whiteboard</feature>
<feature>cxf-features-logging</feature>
<feature>cxf-jaxrs</feature>
<feature>cxf-rs-security-cors</feature>
<feature>cxf-jackson</feature> <-------- here it is
<feature>cxf-commands</feature>
<feature version="[4.3, 5.4)">hibernate</feature>
<!--
<bundle dependency="true">mvn:com.gtarc.servicedirectory.model.service/service-model/${pom.version}</bundle>
-->
<feature>sd-model</feature>
<bundle start-level="80">mvn:com.gtarc.servicedirectory.server.rest/sd-rest/${pom.version}</bundle>
<bundle start-level="80">mvn:com.gtarc.servicedirectory.server.rest/jiac-rest-server/${pom.version}</bundle>
</feature>
2. Check if the dependency is declared when building our bundle:
In our bundle's pom:
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<instructions>
<Import-Package> com.fasterxml.jackson.* </Import-Package>
... ... ...
</instructions>
</configuration>
</plugin>
3. If changed, refresh are reload:
Rebuild feature:
mvn clean install
Reload karaf:
karaf@root()> feature:repo-refresh mvn:com.gtarc.servicedirectory/sd-feature/1.0.0/xml/features 16:25:31 Refreshing feature url mvn:com.gtarc.servicedirectory/sd-feature/1.0.0/xml/features karaf@root()> feature:install sd-all-test