Information Technology Reference
In-Depth Information
The main characteristics of the AWED model are:
Remote pointcuts which can be used to match events on remote hosts, including
remote sequences. Sequences define a list of methods that have been executed
in order and may be referred to in pointcuts and advice. Remote pointcuts
enable the matching of join points on remote hosts and includes remote
calls and remote cflow constructs (matching of nested calls over different
machines).
Distributed advice execution. Advice can be executed either synchronously or asyn-
chronously.
Distributed aspects which may be configured using different deployment and in-
stantiation options.
The motivation behind the development of the AWED language is trans-
actional cache replication in the JBoss application server and consequently the
language supports the notion of distributed hosts with the keyword host and
includes the ability to define groups of hosts.
On the occurrence of a join point, AWED evaluates all pointcuts on all hosts
where the corresponding aspects are deployed. Pointcuts may contain conditions
about hosts where the join point originated and may also be defined in terms where
advice is executed [73].
For example 7 the pointcut:
call(void initCache()) && host( "adr1:port" )
matches calls to the initCache method on the host with the specified address and
the advice may be executed on any host where the aspect is deployed [73].
The AWED language is a fairly low-level language and borrows much of its
syntax from AspectJ, including the keywords pointcut , call , after , around and
before . In common with RIDL, the AWED language has no support for either
multiple protocols (its current implementation uses the RMI protocol exclusively)
or the recovery concern.
3.8.2
AspectJ Implementations
Soares et al. [91] illustrate how the AspectJ language can be used to introduce the
distribution concern in the form of the RMI protocol into existing non-distributed
applications. Soares et al.'s solution utilises two aspects, a client aspect and a
server aspect. For the server aspect, a remote interface is generated for each object
that is to be distributed and each object is altered to implement the interface. The
client aspect redirects local method calls to the now remote object and alters the
local methods to declare that they throw the RemoteException exception. Due to
AspectJ's inability to allow changes to the target object in its proceed statement,
a dedicated redirection advice is used to redirect calls to the remote object from
the client object.
7 These examples are reproduced from Navarro et al. [73].
 
Search WWH ::




Custom Search