I'm wondering how
many people would like to access persistent objects from a remote
client
directly. I guess
most people use servlets/JSP, in which case they don't care about
remote
accessibility.
Looking at J2EE,
entity beans can be accessed remotely. However, every call to an
entity
bean to a remote
client is basically a remote call, so performance is bad. That's why
people
recommend the
session facade design pattern. Same can be applied if Hibernate is
used
instead of local
entity beans. However, I don't like that pattern that much, because you have to
deal with value
objects, and the object model is very object oriented.
Ideally, what I
would like is a framework that provides the following
features:
(1) remote access to
business objects. Framework provides smart proxies that can cache
property
values, such that a call to a business object
from a remote client doesn't always result
in a remote call. A smart proxy could also be
serialized to the client with some initial
state, so calling getXYZ() won't cause a remote
call. Further, smart proxies could batch
property updates into one remote call (setX(),
setY(), flush()). Any update to remote objects
on the server part of the client session could
then automatically update cached property
values of smart proxies on the client,
implemented as extra data of a RMI call reply.
(2) The framework
could use its own version of RMI where RemoteException is a
runtime
exception --> remote interfaces are not
require to declare throwing RemoteException.
This has the advantage that a remote proxy (or
stub) could implement a Java2
collection interface, such as java.util.List,
instead of creating its own interfaces for
collections.
Are there other
people who would like functionality like this?
Thx
Andrej