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
This archive was generated by hypermail 2.0.0 : Sat Nov 11 2006 - 20:26:29 EST