You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@cayenne.apache.org by Tarik <ch...@gmail.com> on 2007/11/18 20:57:54 UTC

Some design questions

Hi,

I have been trying the cayenne ROP features and am considering using it for
a project which requires multiple (swing) clients to connect to an
application server.  I have got it to work for a simple example.  Now I have
some more design questions.

- Can a client app register to listen for changes on server object?  Since
there will be multiple clients, I want changes made by one client to appear
on the others without them having to refresh.
- I will need to create a number of JTables with data coming from the
server.  Has anyone done some labor-saving work around automatically
displaying cayenne object data in a JTable? (It would be awesome if it
allowed traversing associations, adding /removing columns / applying
filters, etc.)
- What kind of locking does data context provide?  say i have two threads
updating an object and one commits first and stales the object.  What will
happen when the second thread tries to commit.
- Is there a know throughput limit in terms of transactions per second with
the hessian web service?


Thank you,

Re: Some design questions

Posted by Tarik <ch...@gmail.com>.
Thanks Ari, yes, a polling mechanism with local caching and event
notification on the client should work great. Might be a good cayenne 4
feature.  I'll check out your app for inspiration :-)  Congrats on the baby.


On Nov 18, 2007 3:52 PM, Aristedes Maniatis <ar...@ish.com.au> wrote:

>
> On 19/11/2007, at 6:57 AM, Tarik wrote:
>
> > I have been trying the cayenne ROP features and am considering using
> > it for
> > a project which requires multiple (swing) clients to connect to an
> > application server.  I have got it to work for a simple example.
> > Now I have
> > some more design questions.
>
> We do much of what you describe in a client/server ROP application:
> http://www.ish.com.au/oncourse
> . You can download it and give it a try to see the user interface and
> I guess there isn't technically much to stop you poking around its
> class structure with a little decompiling :-)
>
> > - Can a client app register to listen for changes on server object?
> > Since
> > there will be multiple clients, I want changes made by one client to
> > appear
> > on the others without them having to refresh.
>
> There is a messaging framework in Cayenne, although in our case I've
> been thinking of doing something a bit different since we may have
> clients which aren't on the same subnet, so some sort of polling
> mechansim was what I was planning.
>
> > - I will need to create a number of JTables with data coming from the
> > server.  Has anyone done some labor-saving work around automatically
> > displaying cayenne object data in a JTable? (It would be awesome if it
> > allowed traversing associations, adding /removing columns / applying
> > filters, etc.)
>
> We have. Perhaps we could discuss this further off list. I am a bit
> busy for the next 2-3 weeks what with a tender process, a large new
> customer migration, oh, and the birth of my daughter last week... she
> is very cute.
>
> > - What kind of locking does data context provide?  say i have two
> > threads
> > updating an object and one commits first and stales the object.
> > What will
> > happen when the second thread tries to commit.
> > - Is there a know throughput limit in terms of transactions per
> > second with
> > the hessian web service?
>
> No limit really since Hessian is just a lightweight serialiser.
> Probably the limit is more in Jetty or whatever servlet container you
> are running, or perhaps in your database backend. We don't scale our
> application beyond about a dozen users, so our needs aren't huge. We
> chose Jetty mainly for its support in version 6 for a high rate of
> small transactions, plus it is very simple to use.
>
> Ari
>
>
>
> -------------------------->
> 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
>
>
>

Re: Some design questions

Posted by Aristedes Maniatis <ar...@ish.com.au>.
On 19/11/2007, at 6:57 AM, Tarik wrote:

> I have been trying the cayenne ROP features and am considering using  
> it for
> a project which requires multiple (swing) clients to connect to an
> application server.  I have got it to work for a simple example.   
> Now I have
> some more design questions.

We do much of what you describe in a client/server ROP application: http://www.ish.com.au/oncourse 
. You can download it and give it a try to see the user interface and  
I guess there isn't technically much to stop you poking around its  
class structure with a little decompiling :-)

> - Can a client app register to listen for changes on server object?   
> Since
> there will be multiple clients, I want changes made by one client to  
> appear
> on the others without them having to refresh.

There is a messaging framework in Cayenne, although in our case I've  
been thinking of doing something a bit different since we may have  
clients which aren't on the same subnet, so some sort of polling  
mechansim was what I was planning.

> - I will need to create a number of JTables with data coming from the
> server.  Has anyone done some labor-saving work around automatically
> displaying cayenne object data in a JTable? (It would be awesome if it
> allowed traversing associations, adding /removing columns / applying
> filters, etc.)

We have. Perhaps we could discuss this further off list. I am a bit  
busy for the next 2-3 weeks what with a tender process, a large new  
customer migration, oh, and the birth of my daughter last week... she  
is very cute.

> - What kind of locking does data context provide?  say i have two  
> threads
> updating an object and one commits first and stales the object.   
> What will
> happen when the second thread tries to commit.
> - Is there a know throughput limit in terms of transactions per  
> second with
> the hessian web service?

No limit really since Hessian is just a lightweight serialiser.  
Probably the limit is more in Jetty or whatever servlet container you  
are running, or perhaps in your database backend. We don't scale our  
application beyond about a dozen users, so our needs aren't huge. We  
chose Jetty mainly for its support in version 6 for a high rate of  
small transactions, plus it is very simple to use.

Ari



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