cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andrus Adamchik <>
Subject Re: remote object persistence - client classes
Date Wed, 05 Jul 2006 18:52:48 GMT
Remote calls are done via a RemoteService interface (all low-level  
details are handled by Hessian).

public interface RemoteService extends Remote {
     RemoteSession establishSession() throws RemoteException;
     RemoteSession establishSharedSession(String name) throws  
     Object processMessage(ClientMessage message) throws  
RemoteException, Throwable;

The interesting part is "processMessage(ClientMessage)" - essentially  
all communications (including queries and updates) are done using a  
set of ClientMessages. The simplest message would be a QueryMessage  
that holds a NamedQuery. This is probably the place to start.

To estimate the level of effort ... with my current knowledge of the  
framework it would probably take me 2-5 hours to rewrite a very basic  
context-less query client in Java . There may be language-specific  
caveats of course. And a learning curve...


On Jul 5, 2006, at 2:15 PM, Tomi NA wrote:

> On 7/5/06, Andrus Adamchik <> wrote:
>> Actually clients written in other languages is one area that has a
>> huge potential. And this is something I'd really like to explore.
>> Current transport layer (Hessian) has support in many other
>> languages, also a standard WS interface is being developed as a
>> Summer of Code project. All this works already. Still what's lacking
>> is an implementation of a client context in anything but Java. This
>> is the biggest challenge.
> Well, acording to my limited understanding of the framework, the misc.
> client lib implementations would be completely free of the
> database-specific code and the templates to generate client classes
> should be fairly easy to that leaves the context,
> expression manipulation, query manipulation etc. There's some work to
> be done there, but it might make cayenne very interesting to a whole
> new audience:
> "Step 1: Welcome, to the new project wizzard. Please choose your
> language: Java/C#/php/Ruby/Python/Perl/whatever."
> "Step 2: tell me where your database is and I'll set up the servlet
> container and all cayenne-related files so that you can gat your hands
> on the db data..."
> "Step 3: go!"
> ...or something along these lines. :)
>> So if there is an interest in the community to write clients in .NET,
>> PHP, Ruby, Python, (or maybe JavaScript/AJAX???), etc., let's do it.
>> A full implementation would have to mirror "cayenne-client-
>> nodeps.jar", but it can start small, by providing only query API, and
>> then grow to support relationships and updates.
>> Thoughts? Comments? Volunteers? ;-)
> Can you estimate the effort needed to produce the minimal
> implementation for another language? I mean, I'd like to hear an
> estimate of the size of the problem from someone who has a better idea
> than I do of the existing cayenne code needed to implement the client.
> I could go look at client-nodeps.jar, but I'm itching to get out of
> the office and I'd still miss things important to notice. :)
> Btw, the tutorial you linked to is very understandable. I only read it
> - haven't implemented anything - but it's still an opinion.
> Cheers,
> t.n.a.

View raw message