Information Technology Reference
In-Depth Information
(for reference) that may be applied to a parameter. For example:
pointcut void ls.pad(ref StringBuffer, int) {}
declares that the StringBuffer parameter should be passed by reference.
While adding support for pass-by-reference in the DDL is fairly trivial, an
implementation for all protocols, particularly those that don't support pass-by-
reference, is not, as it requires a mechanism to call from the server to the client.
For example, in the above pointcut, method calls on the StringBuffer class will
result in a remote call from the server to the client to access the StringBuffer
method called.
Although pass-by-reference is supported by some protocols, specifically RMI,
it is not supported by all protocols. In order to implement pass-by-reference for
all protocols, we believe it will be necessary to implement the callback mechanism
described in Section 7.3.2 below.
The DDL does not currently support call-by-copy-restore as supported by
J-Orchestra [111]. To support this an additional DDL keyword restore could be
added to the DDL. For example:
pointcut void ls.pad(restore StringBuffer, int) {}
declares that the StringBuffer parameter should be passed by call-by-copy-
restore.
Again, extending the DDL to support call-by-copy-restore is fairly trivial
although a method to implement it will require additional research.
7.3.2
Callback Support
The DDL does not currently support a callback mechanism to allow a server to
call a remote object on the client or on another server.
There are a number of instances where callback support is useful. One is to
support pass-by-reference for protocols that do not support it, as described above,
and another is to support applications that need to call clients to update their
current state.
An example of the latter is a distributed card game where a server sends its
current state to all registered clients so that they may display the card selected by
the server.
Another area for further research is to extend RemoteJ and the DDL to sup-
port servers that are clients to another server, possibly using a different protocol.
7.3.3
Recovery
The DDL does not currently support the management of exceptions that may
occur on the server. For example, if a class file cannot be found or a database
connection fails, it will result in the server failing with no notification to the client
of the type of error that has occurred (besides that which may be supported
by the protocol). These exceptions could be propagated back to the client and
Search WWH ::




Custom Search