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:
- 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
- jerseyinkaraf.servicedef which is an OSGi bundle containing interfaces and beans defining the available OSGi services
- jerseinkaraf.services which is an OSGi bundle containing implementations of the services
- jerseyinkaraf.webapi which is an OSGi bundle that defines a REST API that plugs into the Web Whiteboard Extender and exposes the OSGi services
- 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:
- First download and install apache karaf
- Clone and build jersey-demo into the local maven repository (aka. the "maven local cache"):
#+BEGIN_EXAMPLE
git clone https://github.com/steinarb/jersey-demo.git
cd jersey-demo
mvn clean install
#+END_EXAMPLE
- In the apache karaf command line, install the features that pulls in the servlets with their dependencies
#+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
- 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:
- At the karaf console prompt, give the following command:
#+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.
Release branches
This is a demo project and therefore have no releases.
To preserve a version of the demo project still running on karaf 4.2.x and using OSGi 6, the branch release/1.1.0 has been created for the karaf 4.2.x version.
branch |
snapshot version |
karaf version supported |
release/1.1.0 |
1.1.0-SNAPSHOT |
>=4.2.11 |
master |
2.0.0-SNAPSHOT |
>=4.3.2 |
License
This software project is licensed under Apache License v. 2.
See the LICENSE file for details.