This page will move to the website when it is complete. Please help to complete it. Thanks.
What this is about
As of release 1.3 Tuscany SCA is distributed via one binary distribution that includes everything. Based on user feedback, choice of a smaller distribution packages is desireable. Tuscany community is in the process of addressing this requirement. Please see mailing list for that discussion. This is not the purpose of this page.
Tuscany users have asked for a write-up that highlights module dependencies. This enables them to build their own distribution which may have a lower or higher granularity than the pre-packaged binary distributions. Purpose of this page is to help users understand how to build their own tuscany SCA light distribution based on module dependency knowledge that is shared here.
Therefore:
This page is not about building Tuscany building binary distributions to distribute
This page is about understanding dependencies so that users can build their own distribution
How to build your own distribution
Let's first understand the different categories of module types in Tuscany. This understanding will help us determine how to put the modules together to have a runnable and useful system.
- Core type modules- These are modules that enable you to use SCA programming model to create applications
- Binding type modules - Bindings handle protocols between two services. Tuscany supports many bindings. One or more modules constitute a binding.
- Component type modules - These are the modules that enable you to use different languages or container models to create SCA components. Tuscany supports different component types. There are a set of modules that support each component type. For example, java, BPEL, Spring, etc. There are specific modules that support a given component type.
- Policies type modules- There are different policy types. For example security, monitoriing, etc. There are specific modules that support each policy.
- Databinding type modules - These modules support data types. Tuscany supports many data bindings, including Jaxb, SDO, Axiom, Json/rpc. There are specific modules that support a given data binding.
- Runtime Type modules- Tuscany supports different runtimes. There are specific modules that support a given runtime.
Now that you understand the different module types, let's identify the module that fall into each category.
Tuscany Modules Categorized
SCA provides a programming model for Construction, Assembly, Deployment and Management of network of services.
Tuscany SCA Java modules maps to these areas. Modules under these catetories are the core modules you would need for your basic SCA application development, deployment and management operations.
Now, it gets more interesting! Let's take the assembly case. During this phase, we define protocols to use (Bindings), the policies to use, or the implenentation types to choose from. These are additional modules on top of the basic set that you'd want to choose from based on technologies you use for your specific environment.
The table below is categorized into Construction, Assembly, Deployment, Management, Binding, Components and Policies.
Functional Area |
Feature |
SCA constructs |
Tuscany Modules |
Descriptions |
Dependencies |
Assembly |
SCA assembly |
composite |
assembly |
Model interfaces for the SCA assembly model |
|
Assembly |
Interface |
interface.java |
interface |
Model for interface/operation |
|
Assembly |
Policy |
intent |
policy |
Model for policy |
|
Deployment |
Contribution Processing |
|
contribution |
Process SCA contribution (archives) and build the model for containing artifacts |
|
Infrastructure |
Extensibility |
|
extensibility |
Provide the extensibility to plugin tuscany extensions such as utilities, XML processors, |
|
Infrastructure |
Runtime core and SPI for extensions |
|
core |
Core activates SCA composite and build up the invocation chain between |
|
Assembly |
Databinding |
|
databinding |
A framework to deal with data representation and transformation |
|
Assembly |
SCA API |
|
sca-api |
SCA Java common APIs and Annotations |
|
Deployment |
SCA Node API, Impl and Launchers |
|
node-api |
|
|
Deployment |
SCA Domain Manager |
|
domain-manager |
SCA domain manager web application |
|
Infrastructure |
Serviceability: Monitoring, Logging and Tracing |
|
monitor |
|
|
Binding |
Feed bindings: |
binding.atom |
binding-atom |
Feed support, including atom and rss protocols |
|
Binding |
JSONRPC binding |
binding.jsonrpc |
binding-jsonrpc |
JSONRPC for AJAX |
|
Binding |
RMI binding |
binding.rmi |
binding-rmi |
RMI |
|
Binding |
JMS binding |
binding.jms |
binding-jms |
JMS |
|
Binding |
EJB binding |
binding.ejb |
binding-ejb |
EJB |
|
Binding |
CORBA binding |
binding.corba |
binding-corba |
CORBA |
|
Binding |
GData binding |
binding.gdata |
binding-gdata |
GData |
|
Binding |
HTTP protocol support for all http-based bindings |
|
host-http |
HTTP related hooks |
|
Binding |
HTTP binding |
binding.http |
binding-http |
|
|
Binding |
Web Service binding |
|
binding-ws |
|
|
Binding |
SCA binding |
binding.sca |
binding-sca |
|
|
Binding |
Java implementation |
implementation.java |
implementation-java |
|
|
Component |
BPEL implementation |
implementation.bpel |
implementation-bpel |
|
|
Component |
EJB implementation |
implementation.ejb |
implementation-ejb |
|
|
Component |
Scripting language based implementation |
implementation.script |
implementation-script |
|
|
Component |
Spring implementation |
implementation.spring |
implementation-spring |
|
|
|
|
|
implementation-widget |
|
|
Component |
OSGi implementation |
implementation.osgi |
implementation-osgi |
|
|
Component |
HTTP Resource implementation |
implementation.resource |
implementation-resource |
|
|
Component |
XQuery implementation |
implementation.xquery |
implementation-xquery |
|
|
Component |
Data Access Services |
|
data-api |
|
|
Minimum rquired to build and run SCA applications
Sample pom
Examples for including bindings
sample pom for one or two bindings?
Examples for including Web20
sample pom