[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [ecf-dev] Problem with SharedObject API
|
Hello All,
Scott, thanks for you reply. It works fine.
I had understood SharedObject API and blogged about it
http://samolisov.blogspot.com/2009/11/ecf-osgi.html (on Russian).
Scott Lewis пишет:
> Hi Pavel,
>
> Samolisov Pavel wrote:
>> -----BEGIN PGP SIGNED MESSAGE-----
>> Hash: SHA1
>>
>> Thanks Scott.
>>
>> Tests works fine, my code works too. But I do not understand why this
>> code is in TestSharedObject (in method initialize()):
>>
>> // This is a replica, so initialize the name from property
>> name = (String) getConfig().getProperties().get(NAME_PROPERTY);
>>
>> Is this code a deserialization from Config to SharedObject? Why name do
>> not replicate with SharedObject automaticaly?
>>
>
> This code is only executed on the non-primary copy of the shared
> object (i.e. the replicas). This code (run only on the primary copy),
> is responsible for serializing the state of the shared object (in this
> case, it's name):
>
> protected ReplicaSharedObjectDescription getReplicaDescription(ID
> receiver) {
> // Put primary state into properties and include in replica
> description
> final Map properties = new HashMap();
> properties.put(NAME_PROPERTY, name);
> return new ReplicaSharedObjectDescription(this.getClass(),
> getConfig().getSharedObjectID(), getConfig().getHomeContainerID(),
> properties);
> }
>
> And then the code you quote above sets the name (for the replicas) to
> the value specified by the properties included in the
> ReplicaSharedObjectDescription. The serialization/deserialization of
> shared object state is done explicitly rather than implicitly...so as
> to give the shared object programmer some control over the
> serialization. I was/have been thinking of adding some implicit
> serialization of shared object fields (perhaps through annotations
> processing or some such), but for the moment everything is explicitly
> done (via properties).
>
>> And another question: Does SharedObject API have any listeners that
>> calls when shared object has been added?
>>
>
> Yes, indeed. An IContainerEvent of sub-type
> ISharedObjectActivatedEvent is sent to any/all IContainerListeners
> before the shared object is activated, and similarly
> ISharedObjectDeactivatedEvent is sent before the shared object is
> deactivated. The shared object itself is also asynchronously notified
> as well (the shared object has a message queue and a thread created
> for it to process it's messages...and that's how the initialize method
> gets called on the replicas).
>
> Scott
>
>
--
Pavel Samolisov
Meet me at:
Vkontakte.ru: http://vkontakte.ru/id3178981
Blog: http://samolisov.blogspot.com
Twitter: http://twitter.com/samolisov
XMPP/Jabber: samolisov@xxxxxxxxx
Attachment:
signature.asc
Description: OpenPGP digital signature