Tuscany 2.x Extensibility and SPIs Raymond Feng. Tuscany Extensibility Cx2x/Tuscany+2.x+Extensibility+and+SPIs#extensions.

Slides:



Advertisements
Similar presentations
©2003 aQute, All Rights Reserved Tokyo, August 2003 : 1 OSGi Service Platform Tokyo August 28, 2003 Peter Kriens CEO aQute, OSGi Fellow
Advertisements

AQute R4 By Peter Kriens CEO aQute OSGi Technology Officer and OSGi Fellow.
Introduce OSGi BlueDavy
INTERFACES IN JAVA 1.Java Does not support Multiple Inheritance directly. Multiple inheritance can be achieved in java by the use of interfaces. 2.We need.
Goals Give you a feeling of what Eclipse is.
Component Models and Technologies Case Study: OSGI.
OSGi Remote Services with SCA using Apache Tuscany Raymond Feng
Why OSGi matters for Enterprise Java Infrastructures
Persistent State Service 1 CORBA Component  Component model  Container programming model  Component implementation framework  Component packaging and.
Views Dwight Deugo Nesa Matic
Abstract Classes b b An abstract class is a placeholder in a class hierarchy that represents a generic concept b b An abstract class cannot be instantiated.
 Proteus Framework Redefining the plugin. Why a new framework?  Present approaches (e.g. OSGi) use non-standard approaches that create too many breaking.
OSGi.
INTRODUCING SCA Byungwook Cho Nov.2007.
1/151/15 ENT Metamodel Implementation & Applications ENT metamodel, prototype implementation Component substitutability checking, ENT based component comparison.
Introduction to the Atlas Platform Mobile & Pervasive Computing Laboratory Department of Computer and Information Sciences and Engineering University of.
© 2005 by IBM; made available under the EPL v1.0 | March 1, 2005 Tim deBoer Gorkem Ercan Extend WTP Server Tools for your.
CPSC 410.  Build on previous Connector lectures  Learn how to implement flexible connector implementations  Learn the Dependency Injection pattern.
JavaONE Kjartan Aanestad (Objectware)1 JavaONE 2007.
Polymorphism, Inheritance Pt. 1 COMP 401, Fall 2014 Lecture 7 9/9/2014.
Review: OSGi – a component framework for Java Bundle OSGi Framework Bundle Java Runtime Environment (JRE) Operating System (OS) Hardware “Dynamic Modules.
SCA Assembly Model Anish Karmarkar – Oracle Michael Rowley – BEA.
C O R P O R A T E T E C H N O L O G Y Siemens AG Software & Engineering Usage of Enterprise OSGi inside Siemens:  Siemens Communications, Enterprise Systems.
Jazz WebUI Framework. Apache Derby Jazz Platform Architecture – Open Source middleware Eclipse Equinox Jazz Server Kernel Jazz Server Extensions Web UI.
Object-Oriented Programming (OOP). Implementing an OOD in Java Each class is stored in a separate file. All files must be stored in the same package.
Comparing JavaBeans and OSGi Towards an Integration of Two Complementary Component Models HUMBERTO CERVANTES JEAN-MARIE FAVRE 09/02.
OSGi Enablement for Tuscany Raymond Feng. Overview.
Tu sca ny 1 Extending The Tuscany Java SCA Runtime 21 August 2006.
Component frameworks Roy Kensmil. Historical trens in software development. ABSTRACT INTERACTIONS COMPONENT BUS COMPONENT GLUE THIRD-PARTY BINDING.
OSGi Service Platform Open Service Gateway initiative.
Ch 2 – Application Assembly and Deployment COSC 617 Jeff Schmitt September 14, 2006.
Open Service Gateway Initiative (OSGi) Reporter : 林學灝 侯承育 1.
Slide 1 Extending Tuscany Raymond Feng Apache Tuscany committer.
The Factory Patterns SE-2811 Dr. Mark L. Hornick 1.
Tuscany: a SOA framework Jeffrey Guo Accelrys, Inc.
Tu sca ny 1 The Tuscany Java SCA Runtime 20 August 2006.
Tuscany Runtime Architecture. Contents Overview An example Bootstrap kernel Process of composite application.
Inheritance and Access Control CS 162 (Summer 2009)
Slide 1 Extending Tuscany Raymond Feng Apache Tuscany committer.
Slide 1 Extending Tuscany Raymond Feng Apache Tuscany committer.
SCA Assembly Model Anish Karmarkar – Oracle Michael Rowley – BEA.
Bulding a Modular Application with Coherence David Whitmarsh Independent Contractor Technical Architect Investment Banks
Chapter 11: Advanced Inheritance Concepts. Objectives Create and use abstract classes Use dynamic method binding Create arrays of subclass objects Use.
Access Specifier. Anything declared public can be accessed from anywhere. Anything declared private cannot be seen outside of its class. When a member.
ETICS All Hands meeting B ologna, October , 2006 WP4 Test and Metrics Plugin Framework (WP4) (WP4) Eva TAKACS.
Singleton Pattern. Problem Want to ensure a single instance of a class, shared by all uses throughout a program Context Need to address initialization.
Copyright © 2010 Obeo, Made available under the Eclipse Public License v SCA Tools (Helios) Release Review Planned Review Date: June 11, 2010.
Introduction to OSGi +ActorFrame Surya Bahadur Kathayat
Lecture 5:Interfaces and Abstract Classes Michael Hsu CSULA.
Java for android Development Nasrullah Khan. Using instanceof in Android Development the classes such as Button, TextView, and CheckBox, which represent.
Java Programming Fifth Edition Chapter 9 Introduction to Inheritance.
Copyright © 2012 Obeo and Petals Link, Made available under the Eclipse Public License v SCA Tools (Juno) Release Review Planned Review Date:
Modular Applications and the Lookup API Geertjan Wielenga NetBeans Team.
Apache Tuscany 2.x Domain/Node Raymond Feng
Apache Tuscany 2.x Domain/Node
Goals Give you a feeling of what Eclipse is.
Overall Architecture and Component Model
Tuscany Java SCA Architecture
CMPE212 – Stuff… Assn 3 due and Quiz 2 in the lab next week.
Functional Programming with Java
Interface.
Java Programming Language
Interfaces.
ESIS Consulting LLC (C) ESIS Consulting LLC. All rights reserved
CISC124 Assignment 3 sample solution will be posted tonight after 7pm.
The JSF Tools Project – WTP (internal) release review
Chapter 14 Abstract Classes and Interfaces
Winter 2019 CMPE212 5/25/2019 CMPE212 – Reminders
Plug-In Architecture Pattern
Presentation transcript:

Tuscany 2.x Extensibility and SPIs Raymond Feng

Tuscany Extensibility Cx2x/Tuscany+2.x+Extensibility+and+SPIs#extensions Cx2x/Tuscany+2.x+Extensibility+and+SPIs#extensions

Tuscany Core and Extensions

How is Extensibility achieved? Inspired by Eclipse ExtensionPoint/Extension pattern Use Jar service provider configuration files with extended syntax – ar.html#Service Provider –META-INF/services/

ExtensionPoint Registry

META-INF/services META- INF/services/ org.apache.tuscany.sca.contribution. processor.StAXArtifactProcessor –org.apache.tuscany.sca.assembly.xml.CompositeProcessor;qname= asis- open.org/ns/opencsa/sca/200903#composite,model=org.apache.tuscany.sca.ass embly.Composite

An example

Service Discovery Two types of service discovery mechanisms –Classloader –OSGi bundles Sort by ranking attribute (to override default implementations) –A: ;ranking=100 (A is picked) –B: ;ranking=50 Discover by a filter

OSGi-friendly Service Discovery Bundle.getResource() An implementation of ExtensionPointRegistry that uses OSGi service registry

Service Attributes Similar with OSGi header syntax – ;attr1=value1,attr2=value2 –Both, and ; can be used to separate attributes –| can be used to declare multiple providers on one line – | ;attr1=value1

Service Constructors The Tuscany runtime introspects the constrcutors of an implementation class by the following order for extension points – (ExtensionPointRegistry registry) – (ExtensionPointRegistry registry, Map attributes) – () The extension point controls how to instantiate an extension implementation class

LifeCycle of Extensions The implementation class of an extension point or extension can optionally implement the LifeCycleListener –start() –stop()

Extension Points org.apache.tuscany.sca.core.ModuleActivatorExtensionPoint org.apache.tuscany.sca.core.UtilityExtensionPoint org.apache.tuscany.sca.core.FactoryExtensionPoint org.apache.tuscany.sca.assembly.builder.BuilderExtensionPoint org.apache.tuscany.sca.definitions.xml.DefinitionsExtensionPoint org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessorExtensionPoint org.apache.tuscany.sca.contribution.processor.StAXAttributeProcessorExtensionPoint org.apache.tuscany.sca.contribution.processor.URLArtifactProcessorExtensionPoint org.apache.tuscany.sca.contribution.processor.ValidationSchemaExtensionPoint org.apache.tuscany.sca.contribution.resolver.ModelResolverExtensionPoint org.apache.tuscany.sca.contribution.scanner.ContributionScannerExtensionPoint org.apache.tuscany.sca.core.invocation.ProxyFactoryExtensionPoint org.apache.tuscany.sca.context.ContextFactoryExtensionPoint org.apache.tuscany.sca.provider.ProviderFactoryExtensionPoint org.apache.tuscany.sca.runtime.RuntimeWireProcessorExtensionPoint org.apache.tuscany.sca.databinding.DataBindingExtensionPoint org.apache.tuscany.sca.databinding.TransformerExtensionPoint org.apache.tuscany.sca.databinding.jaxb.XMLAdapterExtensionPoint org.apache.tuscany.sca.host.http.ServletHostExtensionPoint org.apache.tuscany.sca.host.rmi.RMIHostExtensionPoint org.apache.tuscany.sca.implementation.web.runtime.ClientExtensionPoint org.apache.tuscany.sca.web.javascript.ComponentJavaScriptGeneratorExtensionPoint org.apache.tuscany.sca.web.javascript.JavascriptProxyFactoryExtensionPoint

ModuleActivator ModuleActivator is now a special type of LifeCycleListener –void start() –void stop() In 2.x, the implementation class of a ModuleActivator receives ExtensionPointRegistry via constructors instead of start/stop methods Almost all of the 1.x module activators are now converted into regular extension

Utility Extension Point A collection of utility functions Replace static singletons with a registry managed utilities Utilities without a META-INF/services configuration –org.apache.tuscany.sca.common.xml.stax.StA XHelper (concrete class)

Tuscany SPIs OCx2x/Tuscany+2.x+Extensibility+and+SPIs OCx2x/Tuscany+2.x+Extensibility+and+SPIs

Tuscany SPI packages Listed by OSGi Export-Package header The categories –model interfaces (assembly, implementation- java) –base implementation classes –extension point and extension interfaces (extensibility, core-spi, contribution) –common utilities (common-xml, common-java) –node apis and base implementations

Models tuscany-assembly –org.apache.tuscany.sca.assembly –org.apache.tuscany.sca.assembly.builder –org.apache.tuscany.sca.assembly.impl –org.apache.tuscany.sca.definitions –org.apache.tuscany.sca.definitions.util –org.apache.tuscany.sca.interfacedef –org.apache.tuscany.sca.interfacedef.impl –org.apache.tuscany.sca.interfacedef.util –org.apache.tuscany.sca.policy –org.apache.tuscany.sca.policy.impl –org.apache.tuscany.sca.policy.util

Interface-java and interface-wsdl Interface-java –org.apache.tuscany.sca.interfacedef.java.impl –org.apache.tuscany.sca.interfacedef.java.introspect –org.apache.tuscany.sca.interfacedef.java Interface-wsdl –org.apache.tuscany.sca.interfacedef.wsdl Xsd –org.apache.tuscany.sca.xsd –org.apache.tuscany.sca.xsd.xml

Contribution and deployment Contribution –org.apache.tuscany.sca.contribution.scanner –org.apache.tuscany.sca.contribution.resolver –org.apache.tuscany.sca.contribution.processor –org.apache.tuscany.sca.contribution –org.apache.tuscany.sca.contribution.namespace –org.apache.tuscany.sca.contribution.java Deployment –org.apache.tuscany.sca.deployment –org.apache.tuscany.sca.deployment.impl

Extensibility and core-spi Extensibility –org.apache.tuscany.sca.core –org.apache.tuscany.sca.extensibility Core-spi –org.apache.tuscany.sca.context –org.apache.tuscany.sca.invocation –org.apache.tuscany.sca.management –org.apache.tuscany.sca.provider –org.apache.tuscany.sca.runtime –org.apache.tuscany.sca.work Monitor –org.apache.tuscany.sca.monitor

Databinding –org.apache.tuscany.sca.databinding –org.apache.tuscany.sca.databinding.xml –org.apache.tuscany.sca.databinding.impl –org.apache.tuscany.sca.databinding.util –org.apache.tuscany.sca.databinding.annotation –org.apache.tuscany.sca.databinding.javabeans

Node-api and launcher Node-api –org.apache.tuscany.sca.node –org.apache.tuscany.sca.node.configuration Node-impl –org.apache.tuscany.sca.node.impl

Common utilities Common-java –org.apache.tuscany.sca.common.java.classloader –org.apache.tuscany.sca.common.java.collection –org.apache.tuscany.sca.common.java.io –org.apache.tuscany.sca.common.java.reflection Common-xml –org.apache.tuscany.sca.common.xml –org.apache.tuscany.sca.common.xml.dom –org.apache.tuscany.sca.common.xml.sax –org.apache.tuscany.sca.common.xml.stax –org.apache.tuscany.sca.common.xml.stax.reader –org.apache.tuscany.sca.common.xml.xpath

A scheme for internal package dependencies Semi-SPIs for internal module dependencies –Export-Package: a.b;version=2.0.0;internal=true;mandatory:=int ernal –Import-Package: a.b;version=2.0.0;internal=true

Changed SPIs Monitor is now mostly request-scoped New Builder SPIs for extensions (implementation, binding and policy) Context –CompositeContext (maybe should be named as NodeContext) –ProcessorContext –BuilderContext

Changed SPIs (2) ???ProviderFactory.create???Provider() now takes RuntimeEndpoint for service binding and RuntimeEndpointReference for reference binding RuntimeWire is removed. RuntimeEndpoint and RuntimeEndpointReference own the invocation chains.

References

Useful Links TUSCANYxDOCx2x/Tuscany+2.x+Extensi bility+and+SPIshttp://cwiki.apache.org/confluence/display/ TUSCANYxDOCx2x/Tuscany+2.x+Extensi bility+and+SPIs (Chapter 13 and Chapter 14)