|
Table of Contents
What is ReflexD?ReflexD is a versatile kernel for distributed AOP in Java. ReflexD is implemented as an extension of Reflex, making use of Reflex itself and Java RMI as a base for remote invocation. ReflexD allows distributed AOP providing means to specify:
Distributed cutDistributed cut means that execution points can be selected based on the host they occurr. We have extended both the reflective model and the hookset definition to provide distributed cut. First, to extend the reflective model, we have added the RHost interface: public interface RHost{ public String getName(); public String getAddress(); public Properties getProperties(); }
This interface gives access to certain characteristics of a Reflex-enabled VM (a Host): its name, its RMI address and its system properties. With these characteristics, it is possible to discriminate between hosts and select only those that meet some requirements (this selection is done implementing the
And finally, we have extended the notion of public interface HostSelector{ public boolean accept(RHost aRHost); }
Which unique method Distributed actionThe action of an aspect may be possibly executed on a remote host, which is not necessatily the one where the cut is done. We have extended the parametrization, scope and instantiation dimensions for metaobjects.
First, the parametrization has been extended introducing two new parameters related to distribution:
Second, in order to reflect that metaobjects with And finally, we have added means to remotely create objects allowing explicitly-created metaobjects to be placed anywhere. The API to create an object in a remote host is: RHost host = RHosts.get("remoteHost.com", "hostName"); Logger logger = (Logger) host.create("com.logging.Logger");
The code above creates a Distributed bindingThe specification of the binding between the cut and the action of an aspect may be done in any host, which may not be the host where the cut is realized or the action is executed. In order to do this, we have decoupled the link definition, link storage and link application. Hence, the ReflexD architecture consists in three kinds of hosts:
% java reflex.StartLinkRep debugLinks Where debugLinks is the name of the repository.
% java reflex.ExportToRep reflex://remoteHost.com/debugLinks ConfDebug Where ConfDebug is the traditional config class.
% java "--javaagent:reflex.jar=-lp reflex://remoteHost.com/debugLinks" Main
The above command runs the application retrieving the links from the link repository named ImplementationTo see implementation details, please visit the Remote Consistency Framework page. Publications
Loading bibtex info...
|