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_old

------------------------------------------------------------------------------
+ deleted
- ## page was renamed from Tuscany/TuscanyJava/Extending
- 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.
- 

Reply via email to