This is a karaf application that demonstrates using Jersey to provide a REST API in karaf, and demonstrates how OSGi services can be injected into Jersey resources created by the Jersey framework. https://steinar.bang.priv.no/2018/08/03/use-jersey-to-provide-rest-apis-from-karaf-applications/

dependabot[bot] 5051eb3134 Bump jackson-databind from 2.9.10.2 to 2.9.10.3 4 лет назад
jacoco-coverage-report c17d799d51 Add new maven module to build an aggregate jacoco test coverage XML file and use this XML file on sonarcloud to fix 0% test coverage 4 лет назад
jerseyinkaraf.servicedef b9c31c0d0c Make text in pom name elements shorter 4 лет назад
jerseyinkaraf.services b9c31c0d0c Make text in pom name elements shorter 4 лет назад
jerseyinkaraf.webapi d00fbd7d5d Rename the LogService setter to have the same camel case as the JerseyServlet base class 4 лет назад
jerseyinkaraf.webgui 0fd3ceb7eb Move maven-bundle-plugin configuration from <plugins> to <pluginManagement> in the top POM and reference the plugin in all modules that build an OSGi bundle 4 лет назад
src 09845c36b5 Create the Jersey in Karaf demo 6 лет назад
.editorconfig bfe18d049d Initial commit. 6 лет назад
.gitignore bfe18d049d Initial commit. 6 лет назад
.travis.yml c17d799d51 Add new maven module to build an aggregate jacoco test coverage XML file and use this XML file on sonarcloud to fix 0% test coverage 4 лет назад
LICENSE bfe18d049d Initial commit. 6 лет назад
README.org ee552f0cac Change the local path of the webapp from "/overlaptest" to "/jerseyinkaraf" in the README examples 5 лет назад
pom.xml 5051eb3134 Bump jackson-databind from 2.9.10.2 to 2.9.10.3 4 лет назад

README.org

Using Jersey in Apache Karaf

This is a small apache karaf demo application that demonstrates how to use Jersey in Apache Karaf, and how to inject OSGi services into Jersey resources.

Status

file:https://travis-ci.org/steinarb/jersey-demo.svg?branch=master file:https://coveralls.io/repos/steinarb/jersey-demo/badge.svg file:https://maven-badges.herokuapp.com/maven-central/no.priv.bang.demos.jerseyinkaraf/jersey-demo/badge.svg

SonarCloud

file:https://sonarcloud.io/api/project_badges/measure?project=no.priv.bang.demos.jerseyinkaraf%3Ajerseyinkaraf&metric=ncloc#.svg file:https://sonarcloud.io/api/project_badges/measure?project=no.priv.bang.demos.jerseyinkaraf%3Ajerseyinkaraf&metric=bugs#.svg file:https://sonarcloud.io/api/project_badges/measure?project=no.priv.bang.demos.jerseyinkaraf%3Ajerseyinkaraf&metric=vulnerabilities#.svg file:https://sonarcloud.io/api/project_badges/measure?project=no.priv.bang.demos.jerseyinkaraf%3Ajerseyinkaraf&metric=code_smells#.svg file:https://sonarcloud.io/api/project_badges/measure?project=no.priv.bang.demos.jerseyinkaraf%3Ajerseyinkaraf&metric=coverage#.svg

The structure of the Demo

    The demo consists of the following maven artifacts:
  1. jerseyinkaraf The top project which in addition to containing common configuration, and the list of modules, also creates a karaf feature repository containing the features of all bundles created in the modules, and attaches the karaf feature repository to the maven artifact
  2. jerseyinkaraf.servicedef which is an OSGi bundle containing interfaces and beans defining the available OSGi services
  3. jerseinkaraf.services which is an OSGi bundle containing implementations of the services
  4. jerseyinkaraf.webapi which is an OSGi bundle that defines a REST API that plugs into the Web Whiteboard Extender and exposes the OSGi services
  5. jerseyinkaraf.webgui which is an OSGi bundle that exposes a HTML and JavaScript application that plugs into the Web Whiteboard Extender

How to install

    This is how to build and install the servlet:
  1. First download and install apache karaf
  2. Clone and build jersey-demo into the local maven repository (aka. the "maven local cache"):
  3. #+BEGIN_EXAMPLE git clone https://github.com/steinarb/jersey-demo.git cd jersey-demo mvn clean install #+END_EXAMPLE
  4. In the apache karaf command line, install the features that pulls in the servlets with their dependencies
  5. #+BEGIN_EXAMPLE feature:repo-add mvn:no.priv.bang.demos.jerseyinkaraf/jerseyinkaraf/LATEST/xml/features feature:install jerseyinkaraf.webapi feature:install jerseyinkaraf.webgui #+END_EXAMPLE
  6. After this, the servlet will be listening for POST requests, at the local path "/jerseyinkaraf/api/testservice" on the karaf web server, e.g. http://localhost:8181/jerseyinkaraf for a karaf server started locally, with default settings

To uninstall the counter servlet from karaf

    This is how to uninstall the servlet from karaf:
  1. At the karaf console prompt, give the following command:
  2. #+BEGIN_EXAMPLE feature:uninstall webapi #+END_EXAMPLE

This will cause repeated clicks on the "Increment" button to result in 405 responses, because the webgui servlet now intercepts the requests, but that servlet doesn't support the POST requests used to increment the counter.

Reinstalling the webapi feature will cause the count to start again from 0.

License

This software project is licensed under Apache License v. 2.

See the LICENSE file for details.