Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3
Section
borderfalse
Column
width15%
Include Page
TUSCANYWIKI: SCA Java Subproject MenuTUSCANYWIKI:
SCA Java Subproject Menu
Column
width85%

(warning) 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 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.

    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

    Tuscany Modules Break Down by Category

    Note All modules that represent models are highlighted in green.

    Category

    Description

    Functional Area

    Feature

    SCA constructs

    Tuscany Modules

    Descriptions

    Dependencies

    Detail

    SCA PM Assembly

    SCA assembly

    composite
    componentType

    assembly
    assembly-xml
    assembly-xsd

    Model interfaces for the SCA assembly model
    XML Reader, Writer and Resolver
    XSDs for the assemlby model

      SCA PM

    Assembly

    Java Interface

    interface.java

    interface.wsdl
    interface
    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 Model for interface/operation

    Model for java interface
    Reader/Writer for interface.java
    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

    policy
    policy-xml
    policy-xml-ws

    policy-logging
    policy-security
    policy-security-jsr250
    policy-security-ws
    policy-transaction

    definitions
    definitions-xml

    Model for policy
    Read/Writer for policy XML
    Reader/Writer for WS policy XML

      Tuscany Container

    Deployment

    Contribution Processing

     

    contribution
    contribution-xml
    contribution-impl
    contribution-java
    contribution-namespace
    contribution-osgi
    contribution-resource

    Process SCA contribution (archives) and build the model for containing artifacts

     

    Runtime Tuscany Container

    Extensibility

     

    extensibility
    extensibility-equinox

    Provide the extensibility to plugin tuscany extensions such as utilities, XML processors,
    binding providers,
    implementation providers and databindings

     

    Runtime Tuscany Container

    Runtime core and SPI for extensions

     

    core
    core-spi
    core-databinding

    Core activates SCA composite and build up the invocation chain between
    SCA services and references over the bindings

      Tuscany Container

    Rumtime

    Databinding

     

    databinding

    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

     

    Developmemt SCA PM

    SCA API

     

    sca-api

    SCA Java common APIs and Annotations

     

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

     

    Deployment Tuscany Container

    SCA Domain Manager

     

    domain-manager
    workspace
    workspace-impl
    workspace-xml

    Define and manage domain

     

    Runtime Tuscany Container

    Serviceability: Monitoring, Logging and Tracing

     

    monitor
    monitor-logging
    tracing-aspectj

     

    Host Types

    Host environments

     

    host-http
    host-jetty
    host-tomcat
    host-webapp
    host-webapp-junit

    HTTP protocol support for all http-based bindings, more can be added through host SPIs.

    Binding

    Feed bindings:
    Atom
    RSS

    binding.atom
    binding.rss

    binding-atom
    binding-atom-abdera
    binding-rss
    binding-rss-rome

    Feed support, including atom and rss protocols. Needs http type host environment.

     

    Binding

    JSONRPC binding

    binding.jsonrpc

    binding-jsonrpc
    binding-jsonrpc-runtime

    JSONRPC for AJAX. Needs http type host environment. 

    Binding

    RMI binding

    binding.rmi

    binding-rmi
    host-rmi

    RMI 

    Binding

    JMS binding

    binding.jms

    binding-jms
    binding-jms-runtime

    JMS 

    Binding

    EJB binding

    binding.ejb

    binding-ejb
    binding-ejb-runtime
    host-ejb
    host-openejb

    EJB 

    Binding

    CORBA binding

    binding.corba

    binding-corba
    binding-corba-runtime
    host-corba
    host-corba-jee
    host-corba-jse
    host-corba-jse-tns

    CORBA 

    Binding

    GData binding

    binding.gdata

    binding-gdata
    binding-gdata-runtime
    binding-gdata-gsoc
    binding-gdata-runtime-gsoc

    GData 

    Binding

    HTTP protocol support for all http-based bindings

     

    host-http
    host-jetty
    host-tomcat
    host-webapp
    host-webapp-junit

    HTTP related hooks

     

    Binding

    HTTP binding

    binding.http

    binding-http
    binding-http-runtime

       HTTP

    Binding

    Web Service binding

      binding.ws

    binding-ws
    binding-ws-axis2
    binding-ws-axis2-policy
    binding-ws-wsdlgen
    binding-ws-xml

      WebServices

     

    Binding

    SCA binding

    binding.sca

    binding-sca
    binding-sca-xml
    binding-sca-axis2
    binding-sca-corba
    binding-sca-jms
    endpoint

       One of the binding-sca-(types) is needed. The default is corba?

    Binding

    Java implementation

    implementation.java

    implementation-java
    implementation-java-xml
    implementation-java-runtime

      Java component types  

    Implementation

    Component

    BPEL implementation

    implementation.bpel

    implementation-bpel
    implementation-bpel-jbpm
    implementation-bpel-ode

     

     

    Use BPEL components in a composite application. Includes support for Apache ODE.

    Implementation Component

    EJB implementation

    implementation.ejb

    implementation-ejb

     

     

    EJBs as components in a composition

    Implementation

    Component

    Scripting language based implementation
    (Groovy, JavaScript, Ruby and Python)

    implementation.script

    implementation-script

     

     

    enables using Groovy, JavaScript, Ruby, Python as components.

    Implementation Component

    Spring implementation

    implementation.spring

    implementation-spring

       enables inclusion of Spring Application Context in a composite

    Implementation

     

     

    Widgets

     implementation.widget  

    implementation-widget
    implementation-widget-runtime

     

     

     Widget support for web20

    Implementation

    Component

    OSGi implementation

    implementation.osgi

    implementation-osgi

     

     

    enables incusion of  OSGI bundles  in a composite

    Implementation

    Component

    HTTP Resource implementation

    implementation.resource

    implementation-resource
    implementation-resource-runtime

     

     

    HTTP resource type component

    Implementation Component

    XQuery implementation

    implementation.xquery

    implementation-xquery

     

     

     Xquery component

    Implementation Component

    Data Access Services

     

    data-api
    data-engine-helper
    implementation-das
    implementation-data-xml

     

     

    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

    Core with different runtimes?

    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.

    Use case Examples for Tuscany usage

    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

    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

    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.

    Create tools for SCA

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

    Other scenarios

    Please help add other interesting scenarios

    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.