Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [corona-dev] Use Cases

Hi Marcin and Corona folks,

Marcin Okraszewski wrote:

I think you should take a look for ECF. They have a service repository similar to the OSGi one, but services might be remote. Don't know what is the default protocol for this, but I expect that the protocols are pluggable, since this is how ECF is being done.

That's correct (protocols are pluggable).

ECF has a small 'remote services' API/plugin that is patterned after the OSGi services API. The idea here is not to replace the OSGi services API, but rather expose a similar but separate API for remote services...so that the unique aspects of remote services are explicitly exposed (e.g. the occurrence and handling of network failure, the ability to invoke services asynchronously and/or synchronously). See below for some more technical explanation of the remote services API and pointers to javadocs.

The API is protocol-independent...as Marcin suggests.

There's also an implementation of this API based upon the ECF generic provider. It's in the plugin org.eclipse.ecf.provider.remoteservice. Basically what it does is use the ECF shared object API to replicate the remote service registry (a separate but equal service registry :). I believe that Corona is using the ECF generic provider, so the API should already be available to the server and/or client (via IContainer.getAdapter(IRemoteServicesContainerAdapter). Of course, alternative providers could/should be implemented (e.g. SOAP-based, RMI-based, REST, JXTA, jgroups, etc., etc), but we haven't done this yet.

Anyway, if desired, please feel free to ask any questions either on ecf-dev or on this mailing list and I'll try to answer in a timely manner.

Scott

Some more info:

The API is in the org.eclipse.ecf.remoteservices plugin. The javadocs are here:

http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/

The source can be viewed here: http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.ecf/?root=Technology_Project

The ECF IContainer adapter interface for the remote services API is http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/remoteservice/IRemoteServiceContainerAdapter.html. This API is somewhat similar to the BundleContext services API in that it has getRemoteServiceReferences() and registerRemoteService (similar to OSGi BundleContext.getServiceReferences() and BundleContext.registerService).

Note that instead of Object being returned from getRemoteService() (analogous to BundleContext.getService()), an object implementing IRemoteService is returned. If you examine IRemoteService, you will see that there are methods for calling remote services synchronously (blocking call/return), asynchronously (listener), 'fire and forget', and ability to get access to a *local proxy*, which will expose the interface that the original caller of getRemoteServiceReferences() specified as being

Here's the source for a test case (in org.eclipse.ecf.test.remoteservice plugin). This tests both the service 'server' (testRegisterService()), and the 'client' (testGetRemoteServiceReference, testGetRemoteService, testFireRemoteService, testCallRemoteServiceWithProxy, testCallRemoteServiceAsynch)

http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.ecf/tests/org.eclipse.ecf.test.remoteservice/src/org/eclipse/ecf/tests/remoteservice/RemoteServiceTest.java?root=Technology_Project&view=markup

Note that I'm working on replacement/new/simpler test cases for the remoteservices API with more extended tests. I'm also thinking of introducing a RemoteServiceTracker class that would be analogous to the org.osgi.util.tracker.ServiceTracker class to simplify use of the remote services API.

Scott




Marcin



Bryan Hunt wrote:
Here is a set of use cases and some notes. It's kinda high-level, but it should serve as a starting point for discussion.

Bryan



------------------------------------------------------------------------

_______________________________________________
corona-dev mailing list
corona-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/corona-dev
The contents of this e-mail are intended for the named addressee only. It contains information that may be confidential. Unless you are the named addressee or an authorized designee, you may not copy or use it, or disclose it to anyone else. If you received it in error please notify us immediately and then destroy it. _______________________________________________
corona-dev mailing list
corona-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/corona-dev




Back to the top