[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
| [ecf-dev] transparent or not transparent--that is a question | 
Hi Folks,
There have been some very interesting discussions around network 
transparency and OSGi remote services originally started on the Riena 
newsgroup:
news:eclipse.technology.riena
In response to this, I decided to add to ECF the ability to invoke 
remote services transparently.  I implemented a OSGi service property 
that allows those that register services via 
IRemoteServicesContainerAdapter.registerRemoteService(...) to optionally 
publish the remote service proxy to the local service registry, so that 
those that want to access a remote service *with complete network 
transparency* can do so (i.e. via the normal 
bundleContext.getServiceReference()/getService() calls and/or 
ServiceTracker).
There's some test/example code that does this here:
http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.ecf/tests/org.eclipse.ecf.tests.remoteservice/src/org/eclipse/ecf/tests/remoteservice/ServiceReferenceTest.java?root=Technology_Project&view=log
In the testGetServiceReference method, only the local service registry 
is accessed (by client).  This is setup by the service publisher via the 
Constants.LOCAL_SERVICE_REGISTRATION.  An ECF RS proxy is used 
underneath to make the actual call to 
IConcatService.concat(str1,str2)...and this is completely network 
transparent for the client (just using the interface, bundle context, 
OSGi service registry).
In the testGetRemoteServiceReference the IRemoteService is accessed via 
the Constants.REMOTE_SERVICE property, and the method is called 
asynchronously. 
The intention of testGetRemoteServiceReference is to show that ECF RS 
can easily get access to non-network-transparent remote service methods 
if programmers desire it.  Ultimately it's up to the service programmers 
and they can have it either/both ways with ECF RS.  Further, any/all 
variety of transports can be used underneath the RS API...e.g. JMS, ECF 
generic, XMPP, r-OSGi, SOAP/WS, Riena, proprietary impls, any others.
Scott