A multi-tenant Architecture for Apache Axis2. Afkham Azeez wso2.com} WSO2 Inc Senaka Fernando

Slides:



Advertisements
Similar presentations
Building Enterprise applications with Axis2
Advertisements

Apache Struts Technology
Axis2 WSDL- Code Generation. Contents  Scope and Goals of the discussion.  Anticipated runtime behavior.  Proposed Architecture.  Change request for.
Building a scalable multi-tenanted Application Server on the Cloud using Tomcat, Axis2 & Synapse Senaka Fernando (senaka at apache.org)
A Successful RHIO Implementation
Developing Application Extensions with Axis2 Chathura Herath Eran Chinthaka.
SOA and Web Services. SOA Architecture Explaination Transport protocols - communicate between a service and a requester. Messaging layer - enables the.
Making Tomcat Multi-tenant, Elastic, Billed and Metered Paul Fremantle CTO and Co-Founder, WSO2 VP, Apache Synapse ASF
Component Patterns – Architecture and Applications with EJB copyright © 2001, MATHEMA AG Component Patterns Architecture and Applications with EJB JavaForum.
G O B E Y O N D C O N V E N T I O N WORF: Developing DB2 UDB based Web Services on a Websphere Application Server Kris Van Thillo, ABIS Training & Consulting.
OSGi as a Framework for Building a Product Line: Experience and Best Practices Ruwan Linton & Afkham Azeez
© 2005, Cornell University. Rapid Application Development using the Kuali Architecture (Struts, Spring and OJB) A Case Study Bryan Hutchinson
Software Engineering Module 1 -Components Teaching unit 3 – Advanced development Ernesto Damiani Free University of Bozen - Bolzano Lesson 2 – Components.
Peoplesoft: Building and Consuming Web Services
Secure Systems Research Group - FAU Web Services Standards Presented by Keiko Hashizume.
® IBM Software Group © IBM Corporation IBM Information Server Service Oriented Architecture WebSphere Information Services Director (WISD)
UNIT-V The MVC architecture and Struts Framework.
What is Software Architecture?
By Deepal Jayasinghe / Ajith Ranabahu Apache Software Foundation & WSO2 Accelerating Web Services Development with Axis2.
Chapter 10 Architectural Design
Web Service Standards, Security & Management Chris Peiris
THE NEXT STEP IN WEB SERVICES By Francisco Curbera,… Memtimin MAHMUT 2012.
1 © Talend 2014 Service Registry / WS-Policy Registry Training Slides 2014 Jan Bernhardt Zsolt Beothy-Elo
Demonstrating WSMX: Least Cost Supply Management.
Katanosh Morovat.   This concept is a formal approach for identifying the rules that encapsulate the structure, constraint, and control of the operation.
Introducing Axis2 Eran Chinthaka. Agenda  Introduction and Motivation  The “big picture”  Key Features of Axis2 High Performance XML Processing Model.
THE GITB TESTING FRAMEWORK Jacques Durand, Fujitsu America | December 1, 2011 GITB |
GT Components. Globus Toolkit A “toolkit” of services and packages for creating the basic grid computing infrastructure Higher level tools added to this.
Architecting Web Services Unit – II – PART - III.
Component frameworks Roy Kensmil. Historical trens in software development. ABSTRACT INTERACTIONS COMPONENT BUS COMPONENT GLUE THIRD-PARTY BINDING.
Apache Synapse The small print
Web Services Standards. Introduction A web service is a type of component that is available on the web and can be incorporated in applications or used.
XML Web Services Architecture Siddharth Ruchandani CS 6362 – SW Architecture & Design Summer /11/05.
Deferred Messaging Brown Bag 1. Agenda 2 Background Solution Implementation Details Additional Information.
Random Logic l Forum.NET l Web Services Enhancements for Microsoft.NET (WSE) Forum.NET ● October 4th, 2006.
Software Engineering Prof. Ing. Ivo Vondrak, CSc. Dept. of Computer Science Technical University of Ostrava
Looking Ahead to Carbon 5 and Stratos 2 and Beyond By Afkham Azeez, Amila Suriarachchi.
Building a scalable multi-tenanted Cloud-native Application Server using Tomcat, Axis2 & Synapse.
Page 1 © 2001, Epicentric - All Rights Reserved Epicentric Modular Web Services Alan Kropp Web Services Architect WSRP Technical Committee – March 18,
1 GT XACML Authorization Rachana Ananthakrishnan Argonne National Laboratory.
Distribution and components. 2 What is the problem? Enterprise computing is Large scale & complex: It supports large scale and complex organisations Spanning.
Message Broker
HPSearch for Managing Distributed Services Authors Harshawardhan Gadgil, Geoffrey Fox, Shrideep Pallickara Community Grids Lab Indiana University, Bloomington.
Axis2 - Overview. Agenda  What is already there Overall Architecture Core AXIOM WSDL Deployment Client API  What is yet to come Encoding – Pluggable.
Architecture View Models A model is a complete, simplified description of a system from a particular perspective or viewpoint. There is no single view.
1 Software Design Lecture What’s Design It’s a representation of something that is to be built. i.e. design  implementation.
Gridshell Security Master Project Akylbek Zhumabayev Rochester Institute of Technology.
© FPT SOFTWARE – TRAINING MATERIAL – Internal use 04e-BM/NS/HDCV/FSOFT v2/3 JSP Application Models.
Component Patterns – Architecture and Applications with EJB copyright © 2001, MATHEMA AG Component Patterns Architecture and Applications with EJB Markus.
Java Programming: Advanced Topics 1 Building Web Applications Chapter 13.
Chapter 4 Request and Response. Servlets are controlled by the container.
Copyright 2007, Information Builders. Slide 1 iWay Web Services and WebFOCUS Consumption Michael Florkowski Information Builders.
Apache Solr Dima Ionut Daniel. Contents What is Apache Solr? Architecture Features Core Solr Concepts Configuration Conclusions Bibliography.
ESRIN, 15 July 2009 Slide 1 Web Service Security support in the SSE Toolbox HMA-T Phase 2 FP 14 December 2009 S. Gianfranceschi, Intecs.
A Practical Guide to Apache Axis2 Rajith Attapattu,
Apache Axis2 Sessions with Axis2. 2 Agenda Why do we need sessions? Types of sessions Sessions and their lifetime Deploying services in different session.
Quick start Axis2 - from newbie to SOAP guru Deepal Jayasinghe - WSO2 Inc.
Building Enterprise Applications Using Visual Studio®
WEB SERVICES From Chapter 19 of Distributed Systems Concepts and Design,4th Edition, By G. Coulouris, J. Dollimore and T. Kindberg Published by Addison.
Architecting Web Services
The GEMBus Architecture and Core Components
Architecting Web Services
Distribution and components
Advanced Integration and Deployment Techniques
Apache Sandesha and Apache Axis2
What’s changed in the Shibboleth 1.2 Origin
The Model Layer What is Model?
C6: Introducing Native Invocation with the OpenEdge® Adapter for Sonic™ ESB Chris James Senior Consultant.
WEB SERVICES From Chapter 19, Distributed Systems
SDMX IT Tools SDMX Registry
Presentation transcript:

A multi-tenant Architecture for Apache Axis2

Afkham Azeez wso2.com} WSO2 Inc Senaka Fernando wso2.com} WSO2 Inc

© WSO About the Presenters Afkham Azeez – PMC member Apache Axis, Committer Synapse & Web Services – Member, Apache Software Foundation – Co-author, Axis2 Web Services – Director of Architecture, WSO2 Inc – Blog: Senaka Fernando – PMC member Apache Axis & incubator, committer Web Services – Member, Apache Software Foundation – Product Manager & Associate Tech Lead, WSO2 Inc

Agenda Core Axis2 architectural concepts How Axis2 has been multi-tenanted

What is Axis2? Axis2 is a Web Services engine Successor to the widely used Apache Axis SOAP stack.

Internals of Axis2 Message Handling To fully support the Web services stack (including WSRM, WSSec, WSSecureConversation, etc) – We need to support a pluggable message handling model SOAP message Service Implementation Transport handler

Advanced Web Services7 Composability

Advanced Web Services8 Composability The whole architecture of WS-* has been designed around this model – Use what you need And no more – Don’t replicate technology in different standards – All the standards should work together

Advanced Web Services9 Basic Composability WS-Security WS-ReliableMessaging WS-AtomicTransactions Transactional Secure Transactional Secure Reliable Transactional Secure Reliable

Advanced Web Services10 Composability SOAP Headers that work together Common usage of base components – SOAP – WS-Addressing The right building blocks, e.g. – Reliable pub/sub WSRM + WS-Eventing – Secure Single Sign-on WS-Trust + WS-Security

Advanced Web Services Core Axis: WS with Apache Axis2 © WSO2 Inc Composability example

Internals of Axis2 Composability The aim is to be able to plug in different capabilities independently For example: – Add reliable messaging support and security at the same time However, the combinations can be complex – Validate the signature – Store the message – Decrypt the body – Invoke the service

Internals of Axis2 Axis2 and composability Axis1 had a simple handler chain model The only way to compose different handlers was to manually add and get the order correct Axis2 has a more flexible model; that means adding a new capability is just a matter of plugging in a module

Internals of Axis2 Phases, Modules, Handlers Transport In Dispatch Post- Dispatch Axis2 handler2 Phase rule Module Pre- dispatch handler1

Internals of Axis215 Type of Phases Global phases – Handlers in these phases always run irrespective of the service – Transport, Security, PreDispatch and Dispatch are considered as global phases – These are defaults in the standard axis2.xml Service phases – Any phase that runs after Dispatch phase – Handlers in these phases are specific to the service

Internals of Axis216 Axis2 – Run Time Application Trans port Phase Z Phase Y Phase X XML Message Engine Message Receiver Message Context

Internals of Axis217 Axis2 – Inside Message Context MessageContext abstract class Property Bag someObject “ property2 ” Boolean.TRUE “ property1 ” Execution Chain... Message Pointers to OperationContext, ServiceContext, ConfigurationContext Handlers

Internals of Axis2 Stages of Message Processing Three important stages – Transport Receiver Transport related processing – Dispatching Finding service and operation – Message Receiver Last handler of the chain

Internals of Axis2 Dispatching Two aspects of dispatching – Finding the corresponding descriptions – Finding the corresponding contexts Default dispatchers – AddressingBasedDispatcher – RequestURIBasedDispatcher – SOAPActionBasedDispatcher – SOAPMessageBodyBasedDispatcher

Internals of Axis220 Message Receiver The last handler of the execution chain Message Exchange Pattern (MEP) dependent Does the actual business logic invocation Ability to write custom Message Receivers Some default Message Receivers  RawXMLINOnlyMessageReceiver  RawXMLINOutMessageReceiver  RPC*MessageReceiver

Internals of Axis2 MessageReceiver

Multi-tenant Message Receiver

Tenant-specific Flow

Internals of Axis225 Description & Context Hierarchy Descriptions keep static information – Information extracted from deployment descriptors An example is the class that a specific MessageReceiver will call Contexts keep runtime information – This information needs to be managed for various scopes For example session specific data Essential to keep them separate! :)

Internals of Axis226 Context Hierarchy ConfigurationContext : – Is the runtime representation of the whole system. – To start Axis2 system you need to have configuration context. ServiceGroupContext : – To keep states of a service group throughout the session – A service group is simply a collection of related services ServiceContext : – Will represent the run time of one service – The context lifetime will be the lifetime of the session. OperationContext : – This context is to represent the lifetime of an MEP (Message Exchange Patterns) MessageContext: – Represents the lifetime of an incoming or outgoing message

Internals of Axis227 Context Hierarchy Cont…

Tenants & Super Tenant Super Tenant Tenant: foo.com Tenant: bar.com

Internals of Axis229 Class Loading Service isolation – Each service (in each tenant) gets its own class loader – For example two services can use two different versions of same third party library Module isolation – Each module gets its own class loader – Modules can also be versioned Different services can engage different versions of the same module

Axis2 Repository axis2.repo services modules foo.aar bar.aar abc.mar xyz.mar

Internals of Axis2 How Class Loading Hierarchy is Built

Tenant Axis2 Repo Super Tenant Tenant: foo.com Tenant: bar.com

Tenant Axis2 Repo Management

Tenant-specific Services

Pluggable Deployers Deployment Engine Webapp Data Services POJO Services JAXWS Services

Pluggable Deployers Super Tenant Tenant: foo.com Tenant: bar.com

Securing Services

Lazy Loading Tenant AxisConfiguration & ConfigurationContext are created only when required If a tenant is inactive for sometime, these will be unloaded & GCd Instances when lazy loading happens – First request received – Tenant management console is loaded – A scheduled tenant task is executed

Ghost Artifact Deployer

Ghost Deployer - Performance Initial Response Time (ms) Number of artifacts Without GD With GD

Deployment Synchronizer

Tenant-aware Security Manager Main security manager delegates security verifications to tenant level security managers Super tenant can enforce different security policies on tenants Security policies are tied to the multi-tenancy package assigned to the tenant

Distributed Logging Every service and custom applications logs are captured by the log4j/commons loggings settings Logs are partitioned & stored by tenant Logs are sent to the Manager service via syslog Logs are then viewable / downloadable by tenant admins

MT-Logging Deployment Architecture

AppServer Logs

Polyglot Data Architecture

Metering, Throttling & Billing Some of the key cloud-native attributes In a multi-tenanted setup, you should be able to meter all important aspects e.g. service request count, request/response sizes etc You may decide to throttle certain aspects You may decide to bill for certain aspects e.g. bandwidth/CPU time usage

Recap Axis2 concepts – Messaging, deployment, configurations & contexts How Axis2 has been multi-tenanted – MultitenantMessageReceiver, lazy loading, ghost artifact deployer, data, logging, metering/throttling/billing

QUESTIONS?

Thank You!