|
|
Portable Interceptors |
|
In the context of the IRL Project, a fundamental role is accomplished by CORBA Portable Interceptors. CORBA Request Portable Interceptors allow to intercept messages flowing between clients and servers and to modify messages as well as the invocation path, even on the basis of the information contained in the messages (with some limitation). In particular, Portable Interceptors are a useful tool in the contex of the IRL Project to let a CORBA client holding an Interoperable Object Group Reference invoke an object group and obtain replication and failure transparency. In IRL, this task is accomplished in a transparent way by the Outgoing Request GateWay (ORGW, see also the Architecture page). To evaluate Portable Interceptor's performances on Java ORBs, we run a wide set of experiments on three distinct Java ORBs, namely JacORB, ORBacus for Java, and Orbix 2000. The code is available to download. contact: Carlo Marchetti, Luigi Verde - carlo.marchetti@dis.uniroma1.it, verdefl@tin.it
The experiments,grouped for packages, are the following:
We can group them in four classes: Landmarks, PortableInterceptors, CollocatedProxy and NonCollocatedProxy. For each example, a client performs a burst of requests to the server in order to evaluate two parameters: the latency (averange, min and max) and the throughput. This section comprises:
The Base example is the static (stub-skeleton) case used as landmark. The PIno_op calculates the cost added by a no-op. To run an experiment (i.e. Base):
This section includes:
An interceptor can redirect a client request throwing a LOCATION_FORWARD exception (PINonPermanent case) or all the client requests throwing a LOCATION_FORWARD_PERMANENT exception (PIPermanent case). It is also possible to piggyback information (i.e. a password) from the client orb to the server orb adding service contexts to the message (Piggybacking case). To run an experiment (i.e. PIPermanent):
This section can be divided into two subclasses: 1ORBCollocated and 2ORBCollocated.
The Proxy is a middle-tier between the Client and the Server and it is a CORBA object collocated in the same Client addressable space. The client requests are redirected by the PortableInterceptor to the Proxy that then invokes the Server. The Proxy can be static (receives the client request through the skeleton and then invokes the Server by stub) or dynamic (the same operation with DSI and DII). To run an experiment (i.e. NonPerm1ORBCollocDyn):
How the picture shows, the only difference from the previous case is that the Proxy and the Client are running in the same process, but on distinct ORBs. To run an experiment (i.e. NonPerm2ORBCollocDyn):
This section includes:
In this case, the Proxy runs in the same client host, but in a different process. To run a static experiment (i.e. NonPermNonCollocDyn):
To run a dynamic experiment (i.e. NonPermNonCollocStatic):
We have tested our experiments on WinNT and Windows2000 platforms with JDK1.3.
| ||||||||||||||||