cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Aristedes Maniatis <>
Subject Re: Docs and some questions
Date Sun, 12 Nov 2006 01:25:56 GMT

On 12/11/2006, at 1:15 AM, Andreas Hjortsberg wrote:

> I'm about to start a project where all clients will have a local  
> swing application and database, probably derby or hsqldb.
> It is very important what then a client change some of his objects  
> it is broad casted over the local subnet and the other clients will  
> be updated and it also notifies a main server.
> Has anyone used cayenne and jgroups for this? Is it the path to  
> take? I have looked around but have not found any example or  
> comments on this. Or is the existing integration between jgroups  
> and cayenne designed to mainly work between instances on a  web  
> application?

I didn't know about jgroups until just now, but their web site looks  
very interesting and the projects using it are very reputable. http://

We were briefly looking at XMPP (which is the protocol behind the  
Jabber chat protocol) to do pretty much what you are looking for, but  
abandoned that approach after finding many of the tools we needed  
were large and GPL (not LGPL).

In our situation we have a network of clients connected to a single  
server (all Swing) using Cayenne version 3 and ROP. That part works  
well, but we currently have no mechanism to invalidate caches in a  
distributed way. We would also want to use a messaging system to  
perform pessimistic record locking on Cayenne objects.

Anyhow, although we haven't done this yet, we would be very  
interested in collaborating on any work to tie jgroups into Cayenne.  
Since we use Jetty already, and there is some integration between  
jgroups and Jetty mentioned, perhaps this will be even easier.

Are there others who would want to participate in this work? What we  
would want is:

* mechanism in Cayenne ROP for the server to notify clients whenever  
an object was updated or created. I'd guess we'd use the new version  
3 lifecycle callbacks we've been involved in the development of:

* mechanism for the clients to receive that message and invalidate  
that object in all relevant caches. (Do we need to further mark that  
object in all contexts on the client as HOLLOW?)

* further hook to allow us to update the GUI should that object  
appear on screen (I guess Cayenne is not involved here).

* a further step would be to add a piece of metadata to a Cayenne  
persistent object in order to record its current lock state. Changes  
to this state would need to be propagated between all clients in an  
atomic way.

Any thoughts about whether this would meet your goals?

Ari Maniatis

Level 1, 30 Wilson Street Newtown 2042 Australia
phone +61 2 9550 5001   fax +61 2 9550 4001
GPG fingerprint CBFB 84B4 738D 4E87 5E5C  5EFA EF6A 7D2E 3E49 102A

View raw message