My Wiki!

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

Headline


Navigation