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.
Difference between revisions of "Distribution Providers"
(→Remote Services API) |
(→Remote Services API) |
||
Line 7: | Line 7: | ||
==Remote Services API== | ==Remote Services API== | ||
− | ECF's API for distribution providers is called the Remote Services API. An implementation of this API is the only thing required of distribution provider implementations for them to be successfully used as a standards/compliant implementation of RS/RSA. | + | ECF's API for distribution providers is called the Remote Services API (RSAPI). An implementation of this API is the only thing required of distribution provider implementations for them to be successfully used as a standards/compliant implementation of RS/RSA. |
Symbolic Name: [http://git.eclipse.org/c/ecf/org.eclipse.ecf.git/tree/framework/bundles/org.eclipse.ecf.remoteservice org.eclipse.ecf.remoteservice]<br> | Symbolic Name: [http://git.eclipse.org/c/ecf/org.eclipse.ecf.git/tree/framework/bundles/org.eclipse.ecf.remoteservice org.eclipse.ecf.remoteservice]<br> | ||
Line 15: | Line 15: | ||
*ECF Core Bundles: [http://git.eclipse.org/c/ecf/org.eclipse.ecf.git/tree/framework/bundles/org.eclipse.ecf org.eclipse.ecf], [http://git.eclipse.org/c/ecf/org.eclipse.ecf.git/tree/framework/bundles/org.eclipse.ecf.identity org.eclipse.ecf.identity] | *ECF Core Bundles: [http://git.eclipse.org/c/ecf/org.eclipse.ecf.git/tree/framework/bundles/org.eclipse.ecf org.eclipse.ecf], [http://git.eclipse.org/c/ecf/org.eclipse.ecf.git/tree/framework/bundles/org.eclipse.ecf.identity org.eclipse.ecf.identity] | ||
*org.eclipse.equinox.concurrent.future bundle | *org.eclipse.equinox.concurrent.future bundle | ||
+ | *org.eclipse.ecf.remoteservice.asyncproxy bundle version 1.0.0 (Java 7) or 2.0.0 (Java 8) | ||
+ | |||
[http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/remoteservice/package-summary.html Remote Service API Javadoc]<br> | [http://download.eclipse.org/rt/ecf/latest/javadoc/org/eclipse/ecf/remoteservice/package-summary.html Remote Service API Javadoc]<br> | ||
Revision as of 21:05, 7 October 2015
Contents
Introduction
The Remote Services/Remote Service Admin specifications (chaps 100 and 122 in OSGi Enterprise spec) allows for the use of distinct distribution providers for every exported remote service. Distribution providers are responsible for the actual marshalling/serialization and network communication that takes place when a consumer invokes a method on a remote service.
The ECF Architecture allows the use of multiple distribution providers. Further, ECF's open APIs and implementations allows the creation of new distribution providers that may be based upon existing providers or may be created from scratch using any desired transport protocols and/or serialization formats.
Remote Services API
ECF's API for distribution providers is called the Remote Services API (RSAPI). An implementation of this API is the only thing required of distribution provider implementations for them to be successfully used as a standards/compliant implementation of RS/RSA.
Symbolic Name: org.eclipse.ecf.remoteservice
Minimum EE: J2SE-1.5+
Dependencies
- Framework: OSGi R5+
- ECF Core Bundles: org.eclipse.ecf, org.eclipse.ecf.identity
- org.eclipse.equinox.concurrent.future bundle
- org.eclipse.ecf.remoteservice.asyncproxy bundle version 1.0.0 (Java 7) or 2.0.0 (Java 8)
All RSA distribution providers implement the Remote Services API.
Generic Provider
OSGi Configuration Types/ECF Container Types
ecf.generic.server
ecf.generic.client
ecf.generic.ssl.server
ecf.generic.ssl.client
For example, to export an instance of MyServiceImpl
// Set required OSGi standard service property props.put("service.exported.interfaces","*"); // Set OSGI standard service.exported.configs property to ecf.generic.server props.put("service.exported.configs","ecf.generic.server"); // Set ecf.generic.server-specific properties props.put("ecf.generic.server.port","2121"); props.put("ecf.generic.server.hostname","mycompanyhost.com"); // With two service properties, will export as a remote service via an instance of ecf.generic.server bundleContext.registerService(MyService.class, new MyServiceImpl(), props);
See here for a description for generic-provider-specific service properties such as ecf.generic.server.hostname, ecf.generic.server.port, etc.
Bundles
org.eclipse.ecf.provider
org.eclipse.ecf.provider.remoteservice
Dependencies
org.eclipse.ecf.provider: ECF core bundles, org.eclipse.ecf.sharedobject
org.eclipse.ecf.provider.remoteservice: org.eclipse.ecf.provider, org.eclipse.ecf.remoteservice.asyncproxy
Download/Install
P2 Repo and Karaf Feature: See Download Page
P2 Feature ID: org.eclipse.ecf.provider.generic.remoteservice.feature
Karaf Feature: ecf-remoteservices-distprovider-generic in repo from Karaf Installation Page
Source Code
Git Repo: ECF Git Repo, Paths:
org.eclipse.ecf.provider: framework/bundles/org.eclipse.ecf.provider
org.eclipse.ecf.provider.remoteservice: providers/bundles/org.eclipse.ecf.provider.remoteservice
ECF Generic Distribution Provider