Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
OSGi Remote Service Admin (RSA) User Guide
Contents
Introduction
The OSGi R7 Compendium specification has two sections relevant to OSGi Remote Services: Chapter 100: Remote Services (RS), and Chapter 122: Remote Service Admin (RSA).
These specs, however, are intended primarily for implementers of RS/RSA, rather than remote service developers. This document will describe with examples how to develop, test, and deploy remote services, and clarify how one's own remote service can be managed, controlled, configured, and extended. It's intended to be like a user guide for RS/RSA, and will reference specifications, tutorials, architecture descriptions, and examples, to explain how RS/RSA can be used.
What is an OSGi Service?
The OSGi framework has a simple but powerful service model called OSGi Services. OSGi services are simply Java objects that expose some number of java interfaces. Instances are dynamically registered by interface name along with properties via the OSGi service registry. As described in the specification, OSGi services have a number of advantages, including a support for dynamics, security, a clean separation between service contract and implementation, versioning and others. There are three parts to an OSGi service instance:
- 1 or more service interfaces (java interface)
- An implementation of service interfaces
- A consumer of the service (via the service interface)
OSGi services also have declarative services, which is a simple way to have services injected into consumer code
What is a Remote Service?
OSGi Remote Services is simply extending the OSGi service registry to allow access to OSGi services from out of process...i.e. for remote access.
How is this different from non-OSGi remote services such as http/rest? First, OSGi Remote Services have access to all of the properties of OSGi services...e.g. dynamics, security, versioning, contract separation from implementation, etc as well as full support for declarative services and other injection frameworks.