Skip to main content

[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:

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:

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.


Back to the top