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:// www.jgroups.org

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: http://cwiki.apache.org/CAYDOC/lifecycle-callbacks.html

* 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?


Cheers
Ari Maniatis



-------------------------->
ish
http://www.ish.com.au
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


Attachment: PGP.sig
Description: This is a digitally signed message part

Reply via email to