Differences between revisions 4 and 5
Revision 4 as of 2006-05-12 12:58:41
Size: 2999
Editor: edslattery
Comment:
Revision 5 as of 2009-09-20 22:48:25
Size: 2975
Editor: localhost
Comment: converted to 1.6 markup
Deletions are marked like this. Additions are marked like this.
Line 13: Line 13:
 * [wiki:/ImplementationTypes new types of implementations for application components such as JavaScript]
 * [wiki:/TransportBindings new types of network transport such as HTTP]
 * [wiki:/ProtocolBindings new types of network protocol such as SOAP]
 * [wiki:/DataBindings new types of data binding such as SDO]
 * [wiki:/SystemServices new services that can be provided to applications such as a database connection pool]
 * [[/ImplementationTypes|new types of implementations for application components such as JavaScript]]
 * [[/TransportBindings|new types of network transport such as HTTP]]
 * [[/ProtocolBindings|new types of network protocol such as SOAP]]
 * [[/DataBindings|new types of data binding such as SDO]]
 * [[/SystemServices|new services that can be provided to applications such as a database connection pool]]
Line 22: Line 22:
 * [wiki:/StAXLoading by contributing a component that can extract configuration information from an XML stream]
 * [wiki:/ContextFactoryBuilder by contributing a component that can build contexts that represent application components]
 * [wiki:/WireBuilder by contributing a component that helps wire application compnents together]
 * [[/StAXLoading|by contributing a component that can extract configuration information from an XML stream]]
 * [[/ContextFactoryBuilder|by contributing a component that can build contexts that represent application components]]
 * [[/WireBuilder|by contributing a component that helps wire application compnents together]]

This page is being used to collate information on how people can add extensions to Tuscany to provide new functions such as support for different implementation languages or network bindings. Once we're happy with the documentation we will transfer this to the main project website.

General Principles

We wanted to make sure that Tuscany could be extended in simple but flexible way. To that end, we based the extension model on the SCA Assembly Model itself and allow extensions to be contributed as Module Fragments. Each fragment contains an XML file containing part of an SCA assembly which can be used to define components and wire them together. This guide assumes familiarity with the SCA Assembly Model.

To separate extension code from application code, we introduced a "system" implementation type for components. This "system" type supports Java components in a way that is similar to the Java programming model from the specification but with a few additional privileges that let them become part of the runtime. For more details on "system" components, including what privileges and limitations they have, please check out /SystemComponents

To extend Tuscany, you simply add system components into the assembly that defines the runtime. This adds functionality, functionality that can be used to support a new programming language for components, new ways of communicating in and out of the system, new services that can be made available to applications, anything really ...

In practice, there are a few well defined types of extension that people typically want to add:

Many of these extensions need to integrate into the process that is used to deploy application components. For example, when a user uses a new implementation type in their assembly file, the extension that provides that new implementation needs to be activated during deployment so that it can create the component they defined.

More detailed information on the general deployment process can be found in /DeploymentProcess but in brief there are three touchpoints where extensions need to interact with it:

Details on implementing these can be found in the linked subpages.

Tuscany/TuscanyJava/Extending (last edited 2009-09-20 22:48:25 by localhost)