[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
| Re: [ecf-dev] OSGI Remote Services And Whiteboard Pattern | 
Hi Muammer,
On 5/7/2014 2:13 AM, Muammer Eroğlu wrote:
Thanks a lot Scott for your elaborate answer.
It is absolutely true that the dynamic nature of remote services 
should be considered very carefully, and appropriate measures should 
be taken. However, IMHO, I think that we also have similar problems 
with the local OSGI services, perhaps in a smaller scale.
Yeah. In my view the underlying problems here are timing...as well as 
likelihood of partial failure...and so they are possible in local OSGi 
services. Just much more likely in the distributed case...because of 
network-imposed delays and failure-cases.
That is to say, the local services could also be lazy at 
initialization, or might be removed from the registry soon after. OSGI 
experts were always warning about this dynamism, that the service 
consumer should always be ready for not finding the desired service. 
Whiteboard pattern is a solution for this, since we are not explicitly 
keeping listener references, but relying on the registry.
I checked the ChatServer/Client example app for the usage of 
Whiteboard pattern with remote services. Thanks to Markus and Wim, it 
is a good example indeed. They applied the idea that all of the 
clients distribute their listener services, thus, effectively creating 
a distributed environment. However, for this type of solution, role 
separation for server and client becomes blurry, leading problems such 
as the one Markus pointed out in his bug submission.
As a beginner in this field, I'd like you to excuse me if these 
following questions/theories sound too illogical. Here they are:
- Is it possible for the clients to register their listener services 
on the server? This way, the server wouldn't have to do any discovery, 
and keep on the server role. Then again, server should know which 
listener comes from which machine. This also sounds like a PUB/SUB 
mechanism.
The answer is yes...it is possible for clients to register their 
listener services on a server...in the case of a pub/sub group (aka topic).
The ECF generic, JMS, MQTT, JavaGroups providers all have this 
pub/sub/group capability. This is used to implement our distributed 
event admin [1]...which is an early attempt to use/reuse the OSGi 
EventAdmin service to represent access to a pub/sub group. But it does 
use the ECF shared object API (implemented by the providers above) to 
provide access to pub/sub communication patterns...with group membership 
mgmt/failure detection. We also have an async channel API (called 
datashare) that exposes named messaging channels.
The way that RS, EventAdmin, and datashare are implemented...for the ECF 
generic, JMS, etc providers...is as instances of shared objects. My main 
reason for bringing this up here is to point out that this allows them 
both to co-exist within a single distributed pub/sub group (aka ECF 
'container'). This makes it quite natural for them to provide both RS 
and pub/sub functionality within a single runtime group context.
- If this is too unlikely, is there any way to combine OSGI RS with a 
PUB/SUB provider using ECF? We could use OSGI RS for server services, 
and PUB/SUB for listener requirements.
In a word: yes...it is quite possible to combine OSGi RS with pub/sub 
(in the form of distributed event admin or not).
Just to be clear about this...all of this ECF functionality (pub/sub, 
event admin, shared object api) is currently 'extra spec'...i.e. not 
part of OSGi R5 (or R6 for that matter). It's indeed an important part 
of ECF...and has been all along...as the genesis of the project (at 
least my involvement) was/is based upon pub/sub/group messaging patterns.
For me, one thought that this discussion has triggered is that it might 
ultimately be useful to create/introduce a discovery provider that's 
implemented via the shared object API. One thing this could provide 
would be to provide reliable discovery *within the context of a 
particular pub/sub/distributed group*. This might provide some value for 
the general whiteboard use case.
But just to sum up: yes...it's is quite possible (even natural) to use 
ECF's pub/sub APIs and mechanisms...along with RS. I sort of expect this 
to be an area for future OSGi specification...because as you say the 
OSGi whiteboard pattern is a very useful pattern. But currently, this is 
where specification/standardization currently falls somewhat short, IMHO.
I'm happy to provide technical details about ECF's pub/sub nature as 
desired...I just wanted to make the separation clear in this 
discussion...between what ECF's functionality can provide, and what the 
OSGi RS/RSA specification currently standardizes.
Thanks,
Scott
[1] https://wiki.eclipse.org/Distributed_EventAdmin_Service