Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

OSGi Remote Service Admin (RSA) User Guide

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 a Remote 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. 1 or more service interfaces (java interface)
  2. An implementation of service interfaces
  3. 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

OSGi Remote Services is simply extending access to OSGi services 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.

Back to the top