On 05/12/2007, at 7:46 AM, Adrian Wiesmann wrote:

So here is my problem. While I would like to keep the embedded database
for single user scenarios, I would also like to use ROP for multi user
environments.

Can I implement both and switch from one to the other mechanism with a
simple (to be implemented) configuration switch? From what I read in the documentation Hessian uses a new ObjectContext? That is probably the easy part. But what about client and server code in the client? Can I mix this?
Or is there some simple trick?

We have exactly the same scenario with many of the same choices: Derby, ROP, etc. We used Jetty for the servlet container and that worked really well. We have Derby embedded in the server application. But we've never written a single merged client/server app.

There is quite a lot which is different at the moment between client and server in Cayenne. The entities do not subclass the same Cayenne entities (PersistentObject/CayenneDataObject), so you'll find it very hard to write a single set of code which works interchangeably as a single application and also as client/server, unless internally you continue to use Cayenne ROP/Hessian. You can't easily write code which works both on Cayenne client and also on the server. Apart from the class hierarchy some other things are different: no nested contexts on the client, different behaviour of lifecycle events, etc.

I guess you could connect the client to the server at 127.0.0.1 and make it work like that, even if the client and server are compiled together into a single application. It would be interesting to see which parts you might be able to strip out. I could imagine ways you might be able to remove Jetty from the picture and hook the client and server bits directly together.


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


Reply via email to