[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [ecf-dev] remote services in java applications (no OSGi framework)

Hi All,

I've been working on this and here's a little progress report. Everything described here is available in the ECF ServiceRegistry repo at github [1].

Refactored java-only projects:

1) projects/org.osgi.core.v6: The OSGI R6 framework classes (from OSGi Alliance)
2) projects/org.eclipse.ecf.osgi.serviceregistry: A ServiceRegistry API. Essentially the ServiceRegistry and ServiceRegistryFactory interfaces (plus some classes to support launching with different bundle configs).
3) projects/org.eclipse.ecf.osgi.serviceregistry.connect: An implementation of the ServiceRegistry API based upon the Apache Connect most recent release (1.0.1).
4) projects/org.eclipse.ecf.osgi.serviceregistry.equinox: An implementation of the ServiceRegistry API based upon Equinox 4.5
5) projects/org.eclipse.ecf.osgi.serviceregistry.remoteservices: ECF's implementation of OSGi Remote Services Admin (RSA)

#5 is new, and adds support for using ECF Remote Services/RSA from within Java Applications (i.e. without the OSGi Framework)

Another new thing is that I've added 5 new example projects, that make up 2 remote-services-over-ServiceRegistry (I need to figure out a better name to call this!). These examples are all java-only projects (no bundles).

1) Using existing TimeService host and example consumer code. The time service example is one of the ECF examples distributed with the Remote Services SDK [2]. The timeservice service interface, along with both the host and consumer are used/reused. This shows using DS (on consumer side) to get remote service injection and all the other goodness of DS. And for the host all the remote service registration code is written so there's almost no application code at all.

Projects: projects/examples/com.mycorp.examples.timeservice.sr.host and projects/examples/com.mycorp.examples.timeservice.sr.consumer.ds

2) Using (java-only) service api, host, and consumer example code. This has host registration code, and ServiceTracker-based consumer code as new/separate java projects:

api project (single ITimeService interface class): projects/examples/mycorp.examples.timeservice
host project (registers and exports remote service): projects/examples/mycorp.examples.timeservice.sr.host
consumer project (ServiceTracker): projects/examples/mycorp.examples.timeservice.sr.host

Included in each of the .host and .consumer projects are launch configs that can be used in Eclipse to launch/run/debug these examples. Note that java-only apps from 1 can *fully interoperate* with actual OSGi-Frameworks, on either the host or consumer side. This means for a given service all these remote service patterns are work just fine:

Java Consumer <-> Java Host
OSGi Consumer <-> OSGi Host
Java Consumer <-> OSGi Host
OSGi Consumer <-> Java Host

It's my intention to write up a new tutorial that use these examples (with Java Consumer <-> Java Host) to correspond with Mars SR (June 24).


[1] https://github.com/ECF/ServiceRegistry
[2] https://wiki.eclipse.org/Tutorial:_Building_your_first_OSGi_Remote_Service