Apache Tuscany SCA 2.0-Beta3 July 2011 Release Notes
====================================================

Apache Tuscany provides a runtime based on the Service Component
Architecture. SCA is a set of specifications aimed at simplifying SOA
Application Development which are being standardized at OASIS as part
of Open Composite Services Architecture (Open CSA) - http://www.oasis-opencsa.org/.

Overview
--------

This Apache Tuscany SCA release includes implementations of the main SCA 
specifications and recent updates from Open CSA drafts including:

        * SCA Assembly Model V1.1 
        * SCA Policy Framework V1.1 
        * SCA Java Common Annotations and APIs V1.1
        * SCA Java Component Implementation V1.1
        * SCA Web Services Binding V1.1
        * SCA JMS Binding V1.1
        * SCA Spring Client and Implementation V1.1
        * SCA WS-BPEL Client and Implementation V1.1
        (portions of) SCA JEE Integration V1.1

For those specs marked * the Tuscany runtime passes the 
OASIS conformance tests (otests) for the specs as they stand
at the time of release. If you want to see the tests run you
can manually remove the comment that prevents them running 
in the main build in the following Maven pom:

        testing/compliance-tests/pom.xml

The distribution also includes implementations of many features not 
yet defined by SCA specifications, including:

        - SCA bindings for RMI, REST, WebSockets, Comet, HTTP, JSON-RPC, JSONP, ATOM.
        - Databindings for JAXB, Axis2's AXIOM, DOM, SAX and StAX
        - Integration with various web frameworks

The Tuscany SCA Runtime can be configured as a single node SCA domain.
 
In addition Tuscany SCA supports the following host-deployment options: -
        - running standalone 
        - running in a OSGi enabled runtime Environment (Equinox)
        - running with distributed nodes across multiple JVMs
     
See the CHANGES file for a detailed list of the features in this release.


Support
-------

For more information on Apache Tuscany visit the website at:

    http://tuscany.apache.org/tuscany/
 
Any issues with this release can be reported to Apache Tuscany
using the mailing lists or in the JIRA issue tracker.

    Mailing list archives:

       http://mail-archives.apache.org/mod_mbox/tuscany-user/
       http://mail-archives.apache.org/mod_mbox/tuscany-dev/

    Jira:

       http://issues.apache.org/jira/browse/TUSCANY

To join the project's mailing lists follow the instructions at:

    http://incubator.apache.org/tuscany/mailing-lists.html

To find out more about OASIS Open CSA go to: 

    http://www.oasis-opencsa.org.

Apache Tuscany welcomes your help. Any contribution, including code,
testing, improving the documentation, or bug reporting is always
appreciated. 

Thank you for using Apache Tuscany!

- The Tuscany Team.
