ws-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Apache Wiki <wikidi...@apache.org>
Subject [Ws Wiki] Update of "Tuscany/TuscanyJava/Extending" by edslattery
Date Fri, 12 May 2006 09:12:32 GMT
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Ws Wiki" for change notification.

The following page has been changed by edslattery:
http://wiki.apache.org/ws/Tuscany/TuscanyJava/Extending

New page:
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:
 * [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]

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:
 * [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]

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

Mime
View raw message