Tuscany Runtime Architecture
Tuscany Runtime Architecture
Contents
• Overview• An example• Bootstrap kernel• Process of composite application
Overview
Extensions:1.Component implementation: BPEL, java etc.2.Binding: SOAP/HTTP web services, JSON-RPC , and RMI. 3.Interface Type: Java interfaces and WSDL4.Databinding: SDO, JAXB , and AXIOM
Extension Point Registry(EPR)
• Extension: achieving extensibility• Extension Point is the bridge between Tuscany
kernel and extensions
Extension Point Registry(EPR)
• e.g., ContributionScanner
FolderContributionScanner
JarContributionScanner
ZipContributionScanner
Extension Point Registry(EPR)
• Objects implemented ContributionScanner interface scan specific package and then build an artifact list– e.g., JarContributionScanner for resolving Jar
contributions• Each ContributionScanner object registers
itself with Tuscany runtime via ContributionScannerExtensionPoint
Extension Point Registry(EPR)
• Extension Point Registry(EPR) holds a list of all the extension points
• EPR is used to look up extension point
//create EPRExtensionPointRegistry registry = new Default ExtensionPointRegistry ();
//look upContributionScannerExtensionPoint factories = registry.getExtensionPoint(ContributionScannerExtensionPoint .class);
An example
• An online fruit store
Bootstrap kernel
• Bootstrap sequence
Create Extension Point Registry
• Instantiate ExtensionPointRegistry
//Instantiate EPRExtensionPointRegistry registry = new Default ExtensionPointRegistry ();
Create Extension Point Registry
• Create necessary Extension Point– UtilityExtensionPoint– ModelFactoryExtensionPoint– ProxyFactoryExtensionPoint
//look up UtilityExtensionPointUtilityExtensionPoint utilities = registry.getExtensionPoint(UtilityExtensionPoint.class);
Discover Module Activators
• Load ModuleActivator related configuration files in “/META-INF/services/”
Discover Module Activators
• Previous classes implemented ModuleActivator
Start Module Activators
• Call ModuleActivator.start() to start services• e.g., CorbaRuntimeModuleActivator– Register CorbaHostExtensionPoint– Start Corba server
Create Contribution Service
• Instantiate ContributionServiceImpl
Create Scope Registry
• Scope– Stateless: create a new component instance on
each call– Conversation: create a component instance for
each conversation– Composite: create a single component instance for
all calls
Create Composite Builder
• CompositeBuilder
• Create implementation classes that implemented CompositeBuilder
Create Composite Builder
• CompositeBuilder Impl
Create Composite Activator
• Create CompositeActivatorImpl
Load System SCA Definitions
• Load system definitions– ReliabilityPolicy– TransactionPolicy– SecurityPolicy– LoggingPolicy– WSBindingDefinitions– SCABindingDefinitions– JMSBindingDefinitions
Load Contributions
• Find and load contributions– e.g., Jar, Zip
Resolve composite
• Resolve elements in .composite file– <include>– <component>– <service>
Build Composite
• Execute CompositeBuilder.build()
Build Composite
• E.g., binding type is WSDL, ComponentServiceBindingBuilderImpl.build() will generate WSDL file
Activate Composite
• For each component defined in composite, adding related implementation provider, service binding provider, reference binding provider
Activate Composite
• In Online fruit store, – Store component’s implementation type is
widget, a WidgetImplementationProvider is needed
– shoppingcart component’s implementation type is Java, a JavaImplementationProvider is needed
– store component’s binding type is HTTP, a HTTPBindingProvider is needed
Start Composite
• Start binding, implementation and associated policies, etc.
Start Composite
• In Online fruit store, – Store component:• WidgetImplementationProvider• HTTP binding
– shoppingcart component• JavaImplementationProvider
– Catalog component• Jsonrpc binding