You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by co...@apache.org on 2008/10/14 03:13:00 UTC

[CONF] Apache Tuscany: Build Your Own Tuscany Distribution (page edited)

Build Your Own Tuscany Distribution (TUSCANY) edited by haleh mahbod
      Page: http://cwiki.apache.org/confluence/display/TUSCANY/Build+Your+Own+Tuscany+Distribution
   Changes: http://cwiki.apache.org/confluence/pages/diffpagesbyversion.action?pageId=99358&originalVersion=1&revisedVersion=2






Content:
---------------------------------------------------------------------

{section:border=false}{column:width=15%}
{include: SCA Java Subproject Menu}{column}{column:width=85%}

h1. 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 binary distributions to distribute
*This page is about* understanding dependencies so that users can build their own distribution

h1. 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.

h2. Tuscany Modules Categorized

*SCA programming Model: Assembly, Deployment, Management*
SCA provides a programming model for Construction, Assembly, Deployment and Management of network of services. Modules under these catetories support the SCA programming model.

*Tuscany Container*
Modules in this category are specific to running SCA in a Tuscany environment.
Tuscany container also provides plug points for different host types, bindings, implementations, policies as well as deployment and management (contributions and domain handling).

*Policy*
Module in this category include support for enabling policies as well as policy types.

*Binding*
Modules in this category include various bindings that support different protocols. Typically Bindings are used with SCA programming model, Tuscany container and some component implementation types.

*Implementation*
Modules in this category include support for different component types. Basic SCA environment is needed to use any of these modules.

*Host Environment*
Modules in this category include support for different host environments, such as Tomcat, Jetty, etc.

h3. Module Category Dependency

This section explains the dependencies amongst various categories. This information can be used to define the scope of modules needed to perform different tasks using Tuscany.
| Category | Dependency |
| SCA Programming Model | None. It runs in any container |
| Tuscany Container | SCA Programming Model. Note that Tuscany Container has plug points for various host environments, but is not dependent on any. |
| policy | Tuscany Container and SCA PM |
| Binding | Tuscany Container and some host environment depending on the protocol type |
| Implementation | Tuscany Container |

h3. Tuscany Modules Break Down by Category

{color:#009900}{*}Note{*}{color} All modules that represent models are highlighted in green.
| {color:#330099}{*}Category{*}{color} | *Description* | {color:#330099}{*}SCA constructs{*}{color} | {color:#330099}{*}Tuscany Modules{*}{color} | {color:#330099}{*}Detail{*}{color} |
| SCA PM | SCA assembly | composite \\
componentType | {color:#009900}assembly{color} \\
assembly-xml \\
assembly-xsd | Model interfaces for the SCA assembly \\
XML Reader, Writer and Resolver \\
XSDs for the assemlby model |
| SCA PM | Java Interface | interface.java | {color:#009900}interface{color} \\
interface-java \\
interface-java-xml | Model for interface/operation \\
across Java and WS \\
Model for java interface \\
Reader/Writer for interface.java \\ |
| SCA PM | WSDL Interface | interface.wsdl | interface \\
interface-java-jaxws \\
interface-wsdl \\
interface-wsdl-xml \\
\\
xsd \\
xsd-xml | Interface processor for JAXWS annotation \\
WSDL port type as the interface definition \\
Reader/Writer for interface.wsdl \\
\\
Model for XSD artifacts \\
Reader/Writer to load/save XSDs |
| Policy | Policy | intent \\
policySet | {color:#009900}policy{color} \\
policy-xml \\
policy-xml-ws \\
\\
policy-logging \\
policy-security \\
policy-security-jsr250 \\
policy-security-ws \\
policy-transaction \\
\\ {color:#009900}definitions{color} \\
definitions-xml | Model for policy \\
Read/Writer for policy XML \\
Reader/Writer for WS policy XML |
| Tuscany Container | Contribution Processing | | {color:#009900}contribution{color} \\
contribution-xml \\
contribution-impl \\
contribution-java \\
contribution-namespace \\
contribution-osgi \\
contribution-resource | Process SCA contribution (archives) and build the model for containing artifacts |
| Tuscany Container | Extensibility | | {color:#009900}extensibility{color} \\
extensibility-equinox | Provide the extensibility to plugin tuscany extensions such as utilities, XML processors, \\
binding providers, \\
implementation providers and databindings |
| Tuscany Container | Runtime core and SPI for extensions | | {color:#009900}core{color} \\
core-spi \\
core-databinding \\ | Core activates SCA composite and build up the invocation chain between \\
SCA services and references over the bindings |
| Tuscany Container | Databinding | | {color:#009900}databinding{color} \\
\\
databinding-axiom \\
databinding-fastinfoset \\
databinding-jaxb \\
databinding-jaxb-axiom \\
databinding-json \\
databinding-saxon \\
databinding-sdo \\
databinding-sdo-axiom \\
databinding-xmlbeans | A framework to deal with data representation and transformation |
| SCA PM | SCA API | | sca-api \\ | SCA Java common APIs and Annotations |
| Tuscany Container | SCA Node API, Impl and Launchers | | node-api \\
node-dynamic \\
node-impl \\
node-launcher \\
node-launcher-equinox \\
thirdparty-library \\
\\
node-launcher-webapp \\
node-manager \\
implementation-node \\
implementation-node-runtime \\
host-embedded | Api used to Start/Stop SCA node which bootstraps SCA runtime to run the application. |
| Tuscany Container | SCA Domain Manager | | domain-manager \\
workspace \\
workspace-impl \\
workspace-xml | Define and manage domain |
| Tuscany Container | Serviceability: Monitoring, Logging and Tracing | | {color:#009900}monitor{color} \\
monitor-logging \\
tracing-aspectj \\ | |
| {color:#000000}Host Types{color} | {color:#000000}Host environments{color} | | {color:#000000}host-http{color} \\ {color:#000000}host-jetty{color} \\ {color:#000000}host-tomcat{color} \\ {color:#000000}host-webapp{color} \\ {color:#000000}host-webapp-junit{color} | {color:#000000}HTTP protocol support for all http-based bindings, more can be added through host SPIs.{color} |
| {color:#000000}Binding{color} | {color:#000000}Feed bindings:{color} \\ {color:#000000}Atom{color} \\ {color:#000000}RSS{color} | {color:#000000}binding.atom{color} \\ {color:#000000}binding.rss{color} | {color:#000000}binding-atom{color} \\ {color:#000000}binding-atom-abdera{color} \\ {color:#000000}binding-rss{color} \\ {color:#000000}binding-rss-rome{color} | {color:#000000}Feed support, including atom and rss protocols. Needs http type host environment.{color} |
| {color:#000000}Binding{color} | {color:#000000}JSONRPC binding{color} | {color:#000000}binding.jsonrpc{color} | {color:#000000}binding-jsonrpc{color} \\ {color:#000000}binding-jsonrpc-runtime{color} | {color:#000000}JSONRPC for AJAX. Needs http type host environment. {color} |
| {color:#000000}Binding{color} | {color:#000000}RMI binding{color} | {color:#000000}binding.rmi{color} | {color:#000000}binding-rmi{color} \\ {color:#000000}host-rmi{color} | {color:#000000}RMI{color} |
| {color:#000000}Binding{color} | {color:#000000}JMS binding{color} | {color:#000000}binding.jms{color} | {color:#000000}binding-jms{color} \\ {color:#000000}binding-jms-runtime{color} | {color:#000000}JMS{color} |
| {color:#000000}Binding{color} | {color:#000000}EJB binding{color} | {color:#000000}binding.ejb{color} | {color:#000000}binding-ejb{color} \\ {color:#000000}binding-ejb-runtime{color} \\ {color:#000000}host-ejb{color} \\ {color:#000000}host-openejb{color} | {color:#000000}EJB{color} |
| {color:#000000}Binding{color} | {color:#000000}CORBA binding{color} | {color:#000000}binding.corba{color} | {color:#000000}binding-corba{color} \\ {color:#000000}binding-corba-runtime{color} \\ {color:#000000}host-corba{color} \\ {color:#000000}host-corba-jee{color} \\ {color:#000000}host-corba-jse{color} \\ {color:#000000}host-corba-jse-tns{color} | {color:#000000}CORBA{color} |
| {color:#000000}Binding{color} | {color:#000000}GData binding{color} | {color:#000000}binding.gdata{color} | {color:#000000}binding-gdata{color} \\ {color:#000000}binding-gdata-runtime{color} \\ {color:#000000}binding-gdata-gsoc{color} \\ {color:#000000}binding-gdata-runtime-gsoc{color} | {color:#000000}GData{color} |
| {color:#000000}Binding{color} | {color:#000000}HTTP binding{color} | {color:#000000}binding.http{color} | {color:#000000}binding-http{color} \\ {color:#000000}binding-http-runtime{color} \\ | {color:#000000} {color} HTTP |
| {color:#000000}Binding{color} | {color:#000000}Web Service binding{color} | {color:#000000} {color} binding.ws | {color:#000000}binding-ws{color} \\ {color:#000000}binding-ws-axis2{color} \\ {color:#000000}binding-ws-axis2-policy{color} \\ {color:#000000}binding-ws-wsdlgen{color} \\ {color:#000000}binding-ws-xml{color} | {color:#000000} {color} WebServices |
| {color:#000000}Binding{color} | {color:#000000}SCA binding{color} | {color:#000000}binding.sca{color} | {color:#000000}binding-sca{color} \\ {color:#000000}binding-sca-xml{color} \\ {color:#000000}binding-sca-axis2{color} \\ {color:#000000}binding-sca-corba{color} \\ {color:#000000}binding-sca-jms{color} \\ {color:#000000}endpoint{color} | {color:#000000} {color} One of the binding-sca-(types) is needed. The default is corba? |
| {color:#000000}Binding{color} | {color:#000000}Java implementation{color} | {color:#000000}implementation.java{color} | {color:#000000}implementation-java{color} \\ {color:#000000}implementation-java-xml{color} \\ {color:#000000}implementation-java-runtime{color} | {color:#000000} {color} Java component types |
| {color:#000000}Implementation{color} | {color:#000000}BPEL implementation{color} | {color:#000000}implementation.bpel{color} | {color:#000000}implementation-bpel{color} \\ {color:#000000}implementation-bpel-jbpm{color} \\ {color:#000000}implementation-bpel-ode{color} | {color:#000000} {color} Use BPEL components in a composite application. Includes support for Apache ODE. |
| {color:#000000}Implementation{color} | {color:#000000}EJB implementation{color} | {color:#000000}implementation.ejb{color} | {color:#000000}implementation-ejb{color} | {color:#000000} {color} EJBs as components in a composition |
| {color:#000000}Implementation{color} | {color:#000000}Scripting language based implementation{color} | {color:#000000}implementation.script{color} | {color:#000000}implementation-script{color} | {color:#000000} {color} enables using Groovy, JavaScript, Ruby, Python as components. |
| {color:#000000}Implementation{color} | {color:#000000}Spring implementation{color} | {color:#000000}implementation.spring{color} | {color:#000000}implementation-spring{color} | {color:#000000} {color} enables inclusion of Spring Application Context in a composite |
| {color:#000000}Implementation{color} | {color:#000000} {color} Widgets | {color:#000000} implementation.widget{color} | {color:#000000}implementation-widget{color} \\ {color:#000000}implementation-widget-runtime{color} | {color:#000000} Widget support for web20{color} |
| {color:#000000}Implementation{color} | {color:#000000}OSGi implementation{color} | {color:#000000}implementation.osgi{color} | {color:#000000}implementation-osgi{color} | {color:#000000} {color}enables incusion of  OSGI bundles  in a composite |
| {color:#000000}Implementation{color} | {color:#000000}HTTP Resource implementation{color} | {color:#000000}implementation.resource{color} | {color:#000000}implementation-resource{color} \\ {color:#000000}implementation-resource-runtime{color} | {color:#000000} {color} HTTP resource type component |
| {color:#000000}Implementation{color} | {color:#000000}XQuery implementation{color} | {color:#000000}implementation.xquery{color} | {color:#000000}implementation-xquery{color} | {color:#000000} Xquery component{color} |
| {color:#000000}Implementation{color} | {color:#000000}Data Access Services{color} | {color:#000000} {color} | {color:#000000}data-api{color} \\ {color:#000000}data-engine-helper{color} \\ {color:#000000}implementation-das{color} \\ {color:#000000}implementation-data-xml{color} | |

h4. Relationship of Modules and OSGI Bundles
There are various ways and views for creating OSGI bundles. This can be discussed under "OSGI bundles" topic which can define how modules in a bundle are versioned together, start together and share class loaders. For the sake of understanding structure of modules, we can say that each module is an 
OSGI bundle. These can be pulled together to create coarser grain bundles if needed.  

h2. Use case Examples for Tuscany usage


h3. Use Tuscany as a runtime for SCA development

*Example:* Develop SCA applications in Tuscany based on POJOs
_Basic Category of Modules Needed:_ SCA PM, Tuscany Container, implementation.java, SCA default binding

h3. Adopt the programming model to create a component model for your own runtime

*Example:* Use SCA for configuration of and ESB engine
_Basic Category of Modules Needed:_ SCA PM

h3. Embed Tuscany within an application server

*Example:* Embed Tuscany with an application server such as Geronimo
_Basic Category of Modules Needed:_ SCA PM, Pick the features that are needed to run on the given platform, binding.ejb, implemenation.java, etc. In some cases you need to use host SPIs to provide the platform specific behavior. For examples check out host_\* modules.

h3. Create tools for SCA

*Example:* Write a development tool for SCA
Basic Category of Modules Needed:\_ SCA PM

h3. Other scenarios

Please help add other interesting scenarios

h2. How to create your own distribution

TBD
Link to the page describing how to create a POM.xml and use maven to generate distribution.
Talk about how maven figures out third party dependencies. {column}{section}

---------------------------------------------------------------------
CONFLUENCE INFORMATION
This message is automatically generated by Confluence

Unsubscribe or edit your notifications preferences
   http://cwiki.apache.org/confluence/users/viewnotifications.action

If you think it was sent incorrectly contact one of the administrators
   http://cwiki.apache.org/confluence/administrators.action

If you want more information on Confluence, or have a bug to report see
   http://www.atlassian.com/software/confluence