Grid Computing Research Laboratory

State University of New York (SUNY) Binghamton
Department of Computer Science

Michael J. Lewis (mlewis@binghamton.edu)
Co-Director, Assistant Professor of Computer Science
Madhusudhan Govindaraju (mgovinda@.cs.binghamton.edu)
Co-Director, Assistant Professor of Computer Science

[Home] [Background] [For Visitors] [Projects] [People] [Papers] [Talks] [Resources] [Funding] [Internal]

XCAT: A Web Services Based Distributed CCA Framework

XCAT allows scientists to compose applications with a set of distributed components. In recent times the Web Services model has been adopted as the underlying architecture for Grid Systems. One of the goals of the XCAT project is to be develop a distributed framework that is consistent with this model. The distributed framework itself is designed to be compliant with the Common Component Architecture (CCA) specification. An XCAT component can serve as both a CCA and a Grid (OGSI based) service. XCAT has been developed in both C++ and Java.

XCAT and OGSI : We have studied the similarities and differences between the OGSI and CCA specifiation. A unification of the two models benefits both efforts, yet lets each group focus on their particular needs. Since the two specifications are evolving, our work on merging the two specifications has focused on identifying OGSI concepts that directly map to CCA features.

XCAT-Java

XCAT uses the XSOAP communication system for messaging, which provides an elegant model for communication between objects in different address spaces. XSOAP (formerly called SoapRMI) is an implementation of the Java RMI model in Java (XSOAP-Java) and C++ (XSOAP-C++) that uses SOAP as the communication protocol. XSOAP-Java uses the dynamic proxy feature, introduced in Java 1.3, to dynamically generate stubs and skeletons for every remote method invocation.

XCAT-C++

Currently, the XCAT-C++ framework is under developement. This verion will use the Proteus multi-protocol library as the communication substrate for XCAT-C++ components. The previous version of XCAT-C++ was based on XSOAP-C++. However, that version is no longer supported.

XCAT Java Features

XCAT provides a Creation service that encapsulates the component instantiation mechanism, thus shielding the component developers from the low-level, implementation-specific details of the instantiation mechanisms. This service allows:

Instantiating XCAT Components: Creating instances of components from a set of environment values, such as executable location, host machine, and creation mechanism. A new component can be created in the same address space as the creating component or it may be instantiated in a different one on another host, in which case Globus GRAM (via the Java CoG Kit), or ssh (if no queuing is desired, and Globus is unavailable) can be used. Upon successful instantiation of the component, the creation service returns a ComponentID that serves as a handle for the new component.

Connection Service: XCAT also provides a Connection service which allows instantiated components to establish communication links with one another via their typed ports. By providing an external mechanism for connecting ports, the port types and descriptions themselves can remain free of any connection semantics. This service allows:

Exporting: exporting the ports of another component as one's own. Using this feature, wrapper components can expose selected functionality of other components. This allows a component to present a simplified interface to the end-users, shielding them from the unnecessary details.

Security: Every remote method call can be intercepted by the XCAT-Java framework before it invokes a method on the provides port. A security service can thus be interposed between the provides port and the XCAT framework. This security service can inspect the call and allow its passage if the security requirements have been met. The current version uses SSL with X.509 certificates and supports both authentication as well as a simple authorization model based on access control lists. This has been discussed in detail in this paper.

ComponentID: The ComponentID represents a transportable handle to the component. XCAT uses the remote reference mechanisms provided by XSOAP to represent a ComponentID. This handle can be {\sl stringified} and published to a registry service. It can then be discovered by interested parties and used to invoke methods on the component. The ComponentID in this serialized form is an XML document that describes the component. This XML document can be converted to a WSDL document using a tool provided by the XSOAP toolkit.

Exceptions: XCAT provides an exception model for communication between components. All exceptions thrown during communication between components are caught and returned to the component that initiated the communication. The exceptions are mapped to {\sl SOAP faults} on the wire and then to corresponding exceptions on receiving end of the initiating component.

Events and Notification: XCAT-Java was tested with event notification system called XMessages , which is a messaging middleware system designed for Grid applications that reliably delivers XML messages from publishers to subscribers even if a subscriber moves to a new location, or a publisher is restarted. Currently, the event system is not distributed along with XCAT.

Publications

Here are some recent publications that discuss XCAT. Additional publications on XCAT and projects that use XCAT can be found in the publications page maintained by Extreme! Lab at Indiana University.
  1. Madhusudhan Govindaraju, Himanshu Bari, and Michael J. Lewis, "Design of Distributed Component Frameworks for Computational Grids," in proceedings of The International Conference on Communications in Computation, pp. 160-166, June 2004. [PDF] [PS] [bibtex]
  2. Madhusudhan Govindaraju, Sriram Krishnan, Kenneth Chiu, Aleksander Slominski, Dennis Gannon, Randall Bramley, ``Merging the CCA Component Model with the OGSI Framework'', Accepted for publication in the proceedings of CCGrid 2003, 3rd IEEE/ACM International Symposium on Cluster Computing and the Grid, Tokyo, Japan, May 12-15, 2003. [PDF] [PS] [bibtex]


      Page maintained by Madhusudhan Govindaraju (mgovinda@cs.binghamton.edu).