Skip to content
Mirror of Tuscany SCA C++
Branch: trunk
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


Apache Tuscany SCA Runtime

Tuscany SCA Native is an SCA (Service Component Architecture) runtime written
in C++ and integrated with the Apache HTTPD server.

It supports SCA components written in C++ and Python. Experimental support
for other programming languages is under construction. SCA bindings are
available for REST services and the JSON-RPC, ATOMPub and RSS protocols.
User signin is implemented using OpenID and OAuth.

Several useful SCA components are provided on top of the SCA runtime, which
can be used to help assemble distributed SCA composite applications:

Cache: key/value memory cache, using Memcached;
Chat: XMPP chat, using Apache Vysper and Libstrophe;
Constdb: fast persistent store for mostly constant data, using TinyCDB;
Filedb: key/value persistent store, using plain files;
Http: HTTP client, using Libcurl;
Smtp: SMTP client, using Libcurl;
Log: distributed logger, using Facebook Scribe;
Queue: AMQP queuing, using Apache Qpid/C;
Sqldb: SQL database, using PostgreSQL and PgBouncer;
Webservice: Web service gateway, using Apache Axis2/C.

These components present a simple ATOMPub REST interface, allowing you to work
with a data cache, a database, a message queue or a chat connection for example
very simply using HTTP GET, POST, PUT and DELETE methods.

Getting the source code

To checkout the source code, do this:
git clone git://

To checkout the source code with commit access, do this:
git clone git://
cd tuscany-sca-cpp/.git
curl -OL
cd ..
git config svn.authorsfile .git/authors.txt
git config <you>
git config svn.rmdir true
git svn init --prefix=origin/ -s
git svn rebase


Here's a rough guide to the Tuscany SCA source tree:

 |-- trunk                    Master development branch
 |   |
 |   |-- kernel               SCA runtime kernel
 |   |
 |   |-- modules              Modules that plug into the runtime
 |   |   |-- atom             AtomPub data encoding
 |   |   |-- edit             Composite app editor
 |   |   |-- http             HTTP protocol
 |   |   |-- java             Support for Java components
 |   |   |-- json             JSON data encoding
 |   |   |-- oauth            User signin using OAuth
 |   |   |-- opencl           Support for OpenCL components
 |   |   |-- openid           User signin using OpenID
 |   |   |-- python           Support for Python components
 |   |   |-- rss              RSS data encoding
 |   |   |-- scheme           Support for Scheme components
 |   |   |-- server           Apache HTTPD server integration
 |   |   |-- wsgi             Python WSGI server integration
 |   |
 |   |-- components           Useful SCA components
 |   |   |-- cache            Memcached key/value cache
 |   |   |-- chat             XMPP chat
 |   |   |-- constdb          TinyCDB constant persistent store
 |   |   |-- filedb           Plain file persistent store
 |   |   |-- http             HTTP client
 |   |   |-- log              Scribe logger
 |   |   |-- queue            AMQP message queue
 |   |   |-- smtp             SMTP client
 |   |   |-- sqldb            PostgreSQL database
 |   |   |-- webservice       Axis2 Web service gateway
 |   |
 |   |-- samples              Sample Applications
 |   |   |-- store-cluster    Online store on a proxy + server + db cluster
 |   |   |-- store-cpp        Online store written in C++
 |   |   |-- store-gae        Online store written in Python, working on GAE
 |   |   |-- store-java       Online store written in Java
 |   |   |-- store-nosql      Online store using a NoSQL database
 |   |   |-- store-python     Online store written in Python
 |   |   |-- store-scheme     Online store written in Scheme
 |   |   |-- store-sql        Online store using an SQL database
 |   |   |-- store-vhost      Online store on virtual hosts
 |   |
 |   |-- macos                Automated install on Mac OS X 10.7.4
 |   |-- ubuntu               Automated install on Ubuntu 12.04
 |   |-- patches              Temporary patches to some of the dependencies
 |   |-- unmaintained         Unmaintained or outdated modules
 |-- branches                 Topic and release branches
 |-- tags                     Release tags


See the INSTALL file at the root of the source tree.

Contributing to the project

To contribute to the project or report issues see the Tuscany development
mailing list:


To subscribe send an email to:

You can’t perform that action at this time.