SlideShare a Scribd company logo
1 of 51
A multi-tenant Architecture
            for
       Apache Axis2
A multi-tenant Architecture
                      for
                 Apache Axis2

        Afkham Azeez                  Senaka Fernando

azeez@{apache.org , wso2.com}   senaka@{apache.org, wso2.com}
          WSO2 Inc                        WSO2 Inc
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: http://blog.afkham.org


• Senaka Fernando
   – PMC member Apache Axis & incubator, committer Web Services
   – Member, Apache Software Foundation
   – Product Manager & Associate Tech Lead, WSO2 Inc




                                  © WSO2 2011
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.
Message Handling
• To fully support the Web services stack
  (including WSRM, WSSec,
  WSSecureConversation, etc)
            – We need to support a pluggable message
              handling model




                                                       Implementation
Transport




                      handler




                                                           Service
                        SOAP message




Internals of Axis2
Composability




Advanced Web Services                   7
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 Services                                       8
Basic Composability



                                            WS-Security
                                                     WS-ReliableMessaging

                         WS-AtomicTransactions




         Transactional         Secure            Secure       Secure        Reliable
                            Transactional       Reliable      Reliable
                                              Transactional




Advanced Web Services                                                                  9
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                       10
Composability example




Advanced Web Services       Core Axis: WS with Apache Axis2   11
                                     © WSO2 Inc. 2006
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           Pre-                         Post-
                                                    Dispatch       Dispatch
                            In       dispatch



                                       Phase rule


                                 handler1                      handler2




                            Module                                            Axis2

Internals of Axis2
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 Axis2                                         15
Axis2 – Run Time

                           Message
                           Context




                                              Engine


 XML               Trans                                       Message
                                                                          Application
                                     Phase




                                             Phase




                                                       Phase
Message            port                                        Receiver
                                     X




                                             Y




                                                       Z




   Internals of Axis2                                                       16
Axis2 – Inside Message Context
MessageContext abstract class

                                                    <soap:Envelope>
                                        Execution
                                                      <soap:Body>
                                        Chain
                                                        <myNS:OrderSushi>
                      Handlers                           ...
                                                        </myNS:OrderSushi>
                                                      </soap:Body>
                                                    </soap:Envelope>
               “property1”       Boolean.TRUE
               “property2”       someObject

                        Property Bag                     Message


   • Pointers to OperationContext, ServiceContext, ConfigurationContext

 Internals of Axis2                                                     17
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 Axis2
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                            20
MessageReceiver




Internals of Axis2
Multi-tenant Message Receiver
Tenant-specific Flow
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 Axis2                                                    25
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 Axis2                                                              26
Context Hierarchy Cont…




Internals of Axis2                             27
Tenants & Super Tenant
                Tenant: foo.com




Super Tenant




                  Tenant: bar.com
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

Internals of Axis2                                                        29
Axis2 Repository

axis2.repo


         services

                       foo.aar

                       bar.aar

             modules


                       abc.mar

                       xyz.mar
How Class Loading Hierarchy is Built




Internals of Axis2
Tenant Axis2 Repo
                  Tenant: foo.com




Super Tenant




                  Tenant: bar.com
Tenant Axis2 Repo Management
Tenant-specific Services
Pluggable Deployers

                        Deployment Engine




                                                POJO
Webapp
                                               Services

              Data                   JAXWS
             Services               Services
Pluggable Deployers
                           Tenant: foo.com



Super Tenant




                           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 Artifact Deployer
Ghost Deployer - Performance
Initial Response Time (ms)

                                Without GD

                                With GD




                              Number of artifacts
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!

More Related Content

What's hot

Adjust Carbon Topology to Match High Availability Scenario Requirements
Adjust Carbon Topology to Match High Availability Scenario Requirements   Adjust Carbon Topology to Match High Availability Scenario Requirements
Adjust Carbon Topology to Match High Availability Scenario Requirements
WSO2
 
Storing and processing data with the wso2 platform
Storing and processing data with the wso2 platformStoring and processing data with the wso2 platform
Storing and processing data with the wso2 platform
WSO2
 
Security Patterns with WSO2 ESB
Security Patterns with WSO2 ESBSecurity Patterns with WSO2 ESB
Security Patterns with WSO2 ESB
WSO2
 
Restful web services rule financial
Restful web services   rule financialRestful web services   rule financial
Restful web services rule financial
Rule_Financial
 

What's hot (20)

Azure Network Security Groups (NSG)
Azure Network Security Groups (NSG)Azure Network Security Groups (NSG)
Azure Network Security Groups (NSG)
 
Kafka Tutorial: Kafka Security
Kafka Tutorial: Kafka SecurityKafka Tutorial: Kafka Security
Kafka Tutorial: Kafka Security
 
Adjust Carbon Topology to Match High Availability Scenario Requirements
Adjust Carbon Topology to Match High Availability Scenario Requirements   Adjust Carbon Topology to Match High Availability Scenario Requirements
Adjust Carbon Topology to Match High Availability Scenario Requirements
 
Kafka Tutorial: Streaming Data Architecture
Kafka Tutorial: Streaming Data ArchitectureKafka Tutorial: Streaming Data Architecture
Kafka Tutorial: Streaming Data Architecture
 
Stratos and PaaS for London Java Community
Stratos and PaaS for London Java CommunityStratos and PaaS for London Java Community
Stratos and PaaS for London Java Community
 
On being RESTful
On being RESTfulOn being RESTful
On being RESTful
 
Azure Networking: Innovative Features and Multi-VNet Topologies
Azure Networking: Innovative Features and Multi-VNet TopologiesAzure Networking: Innovative Features and Multi-VNet Topologies
Azure Networking: Innovative Features and Multi-VNet Topologies
 
Build 2017 - P4045 - Azure VNet for Containers
Build 2017 - P4045 - Azure VNet for ContainersBuild 2017 - P4045 - Azure VNet for Containers
Build 2017 - P4045 - Azure VNet for Containers
 
Microsoft Azure Networking Basics
Microsoft Azure Networking BasicsMicrosoft Azure Networking Basics
Microsoft Azure Networking Basics
 
Storing and processing data with the wso2 platform
Storing and processing data with the wso2 platformStoring and processing data with the wso2 platform
Storing and processing data with the wso2 platform
 
Microservices with SenecaJS (part 2)
Microservices with SenecaJS (part 2)Microservices with SenecaJS (part 2)
Microservices with SenecaJS (part 2)
 
Security Overview
Security Overview Security Overview
Security Overview
 
Scalability in cloud applications
Scalability in cloud applicationsScalability in cloud applications
Scalability in cloud applications
 
Implementing CloudStack's VPC feature
Implementing CloudStack's VPC featureImplementing CloudStack's VPC feature
Implementing CloudStack's VPC feature
 
Security Patterns with WSO2 ESB
Security Patterns with WSO2 ESBSecurity Patterns with WSO2 ESB
Security Patterns with WSO2 ESB
 
MariaDB Prez by Joffrey Michaie
MariaDB Prez by Joffrey MichaieMariaDB Prez by Joffrey Michaie
MariaDB Prez by Joffrey Michaie
 
Restful web services rule financial
Restful web services   rule financialRestful web services   rule financial
Restful web services rule financial
 
Kafka MirrorMaker: Disaster Recovery, Scaling Reads, Isolate Mission Critical...
Kafka MirrorMaker: Disaster Recovery, Scaling Reads, Isolate Mission Critical...Kafka MirrorMaker: Disaster Recovery, Scaling Reads, Isolate Mission Critical...
Kafka MirrorMaker: Disaster Recovery, Scaling Reads, Isolate Mission Critical...
 
MOINC Server
MOINC ServerMOINC Server
MOINC Server
 
autodiscoverable microservices with vertx3
autodiscoverable microservices with vertx3autodiscoverable microservices with vertx3
autodiscoverable microservices with vertx3
 

Similar to A multi-tenant architecture for Apache Axis2

Axis2 architecture and implementation
Axis2 architecture and implementationAxis2 architecture and implementation
Axis2 architecture and implementation
Sreeni I
 
How the WSO2 ESB outperforms other major open source esb vendors
How the WSO2 ESB outperforms other major open source esb vendorsHow the WSO2 ESB outperforms other major open source esb vendors
How the WSO2 ESB outperforms other major open source esb vendors
WSO2
 
Webbinar slides
Webbinar slidesWebbinar slides
Webbinar slides
WSO2
 
Openstack Basic with Neutron
Openstack Basic with NeutronOpenstack Basic with Neutron
Openstack Basic with Neutron
KwonSun Bae
 

Similar to A multi-tenant architecture for Apache Axis2 (20)

Building a multi-tenanted Cloud-native AppServer
Building a multi-tenanted Cloud-native AppServerBuilding a multi-tenanted Cloud-native AppServer
Building a multi-tenanted Cloud-native AppServer
 
1 Introduction at CloudStack Developer Day
1 Introduction at CloudStack Developer Day 1 Introduction at CloudStack Developer Day
1 Introduction at CloudStack Developer Day
 
Architectures with Windows Azure
Architectures with Windows AzureArchitectures with Windows Azure
Architectures with Windows Azure
 
Leveraging Open Source Integration with WSO2 Enterprise Service Bus
Leveraging Open Source Integration with WSO2 Enterprise Service BusLeveraging Open Source Integration with WSO2 Enterprise Service Bus
Leveraging Open Source Integration with WSO2 Enterprise Service Bus
 
CloudStack technical overview
CloudStack technical overviewCloudStack technical overview
CloudStack technical overview
 
Axis2 architecture and implementation
Axis2 architecture and implementationAxis2 architecture and implementation
Axis2 architecture and implementation
 
OpenSAF Symposium_Architecture_and_Roadmap_Update9.19.11
OpenSAF Symposium_Architecture_and_Roadmap_Update9.19.11OpenSAF Symposium_Architecture_and_Roadmap_Update9.19.11
OpenSAF Symposium_Architecture_and_Roadmap_Update9.19.11
 
A Workhorse Named Mule
A Workhorse Named MuleA Workhorse Named Mule
A Workhorse Named Mule
 
An Introduction to the Message Queuing Technology & IBM WebSphere MQ
An Introduction to the Message Queuing Technology & IBM WebSphere MQAn Introduction to the Message Queuing Technology & IBM WebSphere MQ
An Introduction to the Message Queuing Technology & IBM WebSphere MQ
 
Introduction to WSO2 Integration Platform
Introduction to WSO2 Integration PlatformIntroduction to WSO2 Integration Platform
Introduction to WSO2 Integration Platform
 
Building Scalable and Robust Solutions with Service Bus in Cloud and Server
Building Scalable and Robust Solutions with Service Bus in Cloud and ServerBuilding Scalable and Robust Solutions with Service Bus in Cloud and Server
Building Scalable and Robust Solutions with Service Bus in Cloud and Server
 
Wso2 esb
Wso2 esbWso2 esb
Wso2 esb
 
Wso2 esb
Wso2 esbWso2 esb
Wso2 esb
 
Layer 7 and Oracle -
Layer 7 and Oracle - Layer 7 and Oracle -
Layer 7 and Oracle -
 
Axis2
Axis2Axis2
Axis2
 
How the WSO2 ESB outperforms other major open source esb vendors
How the WSO2 ESB outperforms other major open source esb vendorsHow the WSO2 ESB outperforms other major open source esb vendors
How the WSO2 ESB outperforms other major open source esb vendors
 
Webbinar slides
Webbinar slidesWebbinar slides
Webbinar slides
 
Stonehenge
StonehengeStonehenge
Stonehenge
 
ESB and SOA
ESB and SOAESB and SOA
ESB and SOA
 
Openstack Basic with Neutron
Openstack Basic with NeutronOpenstack Basic with Neutron
Openstack Basic with Neutron
 

More from Afkham Azeez

[WSO2Con Asia 2014] Accelerating Mobile App Development with MBaaS
[WSO2Con Asia 2014] Accelerating Mobile App Development with MBaaS[WSO2Con Asia 2014] Accelerating Mobile App Development with MBaaS
[WSO2Con Asia 2014] Accelerating Mobile App Development with MBaaS
Afkham Azeez
 
Java Colombo: Developing Highly Scalable Apps
Java Colombo: Developing Highly Scalable AppsJava Colombo: Developing Highly Scalable Apps
Java Colombo: Developing Highly Scalable Apps
Afkham Azeez
 
WSO2Con 2013 - The Integration Game Changer: WSO2 Integration Cloud
WSO2Con 2013 - The Integration Game Changer: WSO2 Integration CloudWSO2Con 2013 - The Integration Game Changer: WSO2 Integration Cloud
WSO2Con 2013 - The Integration Game Changer: WSO2 Integration Cloud
Afkham Azeez
 
WSO2 Stratos 2010 September Workshop
WSO2 Stratos 2010 September WorkshopWSO2 Stratos 2010 September Workshop
WSO2 Stratos 2010 September Workshop
Afkham Azeez
 

More from Afkham Azeez (20)

SRE & Kubernetes
SRE & KubernetesSRE & Kubernetes
SRE & Kubernetes
 
Microservices Resiliency with BallerinaLang
Microservices Resiliency with BallerinaLangMicroservices Resiliency with BallerinaLang
Microservices Resiliency with BallerinaLang
 
WSO2Con USA Microservices Transactions
WSO2Con USA  Microservices TransactionsWSO2Con USA  Microservices Transactions
WSO2Con USA Microservices Transactions
 
Introduction to WSO2 Microservices Framework for Java (MSF4J) 2.0
Introduction to WSO2 Microservices Framework for Java (MSF4J) 2.0Introduction to WSO2 Microservices Framework for Java (MSF4J) 2.0
Introduction to WSO2 Microservices Framework for Java (MSF4J) 2.0
 
Microservices with MSF4J - WSO2 Meetup
Microservices with MSF4J - WSO2 MeetupMicroservices with MSF4J - WSO2 Meetup
Microservices with MSF4J - WSO2 Meetup
 
Introduction to WSO2 Microservices Framework for Java - MSF4J - WSO2Con Asia ...
Introduction to WSO2 Microservices Framework for Java - MSF4J - WSO2Con Asia ...Introduction to WSO2 Microservices Framework for Java - MSF4J - WSO2Con Asia ...
Introduction to WSO2 Microservices Framework for Java - MSF4J - WSO2Con Asia ...
 
WSO2ConUS 2015 - Introduction to WSO2 Microservices Server (MSS)
WSO2ConUS 2015 - Introduction to WSO2 Microservices Server (MSS)WSO2ConUS 2015 - Introduction to WSO2 Microservices Server (MSS)
WSO2ConUS 2015 - Introduction to WSO2 Microservices Server (MSS)
 
WSO2Con 2015-us-introduction-to-mss-v2
WSO2Con 2015-us-introduction-to-mss-v2WSO2Con 2015-us-introduction-to-mss-v2
WSO2Con 2015-us-introduction-to-mss-v2
 
[WSO2Con Asia 2014] Accelerating Mobile App Development with MBaaS
[WSO2Con Asia 2014] Accelerating Mobile App Development with MBaaS[WSO2Con Asia 2014] Accelerating Mobile App Development with MBaaS
[WSO2Con Asia 2014] Accelerating Mobile App Development with MBaaS
 
Java Colombo: Developing Highly Scalable Apps
Java Colombo: Developing Highly Scalable AppsJava Colombo: Developing Highly Scalable Apps
Java Colombo: Developing Highly Scalable Apps
 
WSO2Con 2013 - The Integration Game Changer: WSO2 Integration Cloud
WSO2Con 2013 - The Integration Game Changer: WSO2 Integration CloudWSO2Con 2013 - The Integration Game Changer: WSO2 Integration Cloud
WSO2Con 2013 - The Integration Game Changer: WSO2 Integration Cloud
 
Unleashing creativity through Arduino
Unleashing creativity through ArduinoUnleashing creativity through Arduino
Unleashing creativity through Arduino
 
Wso2 con raspberry-pi-cluster
Wso2 con raspberry-pi-clusterWso2 con raspberry-pi-cluster
Wso2 con raspberry-pi-cluster
 
Adjusting carbon topology to match high availability scenario requirements
Adjusting carbon topology to match high availability scenario requirements   Adjusting carbon topology to match high availability scenario requirements
Adjusting carbon topology to match high availability scenario requirements
 
Colombo
ColomboColombo
Colombo
 
Intelli J IDEA
Intelli J IDEAIntelli J IDEA
Intelli J IDEA
 
WSO2con 2011: Introduction to Stratos
WSO2con 2011:  Introduction to StratosWSO2con 2011:  Introduction to Stratos
WSO2con 2011: Introduction to Stratos
 
WSO2Con 2011: Introduction to Stratos
WSO2Con 2011: Introduction to StratosWSO2Con 2011: Introduction to Stratos
WSO2Con 2011: Introduction to Stratos
 
WSO2Con 2011: Introduction to the WSO2 Carbon Platform
WSO2Con 2011: Introduction to the WSO2 Carbon PlatformWSO2Con 2011: Introduction to the WSO2 Carbon Platform
WSO2Con 2011: Introduction to the WSO2 Carbon Platform
 
WSO2 Stratos 2010 September Workshop
WSO2 Stratos 2010 September WorkshopWSO2 Stratos 2010 September Workshop
WSO2 Stratos 2010 September Workshop
 

Recently uploaded

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 

Recently uploaded (20)

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 

A multi-tenant architecture for Apache Axis2

  • 1. A multi-tenant Architecture for Apache Axis2
  • 2. A multi-tenant Architecture for Apache Axis2 Afkham Azeez Senaka Fernando azeez@{apache.org , wso2.com} senaka@{apache.org, wso2.com} WSO2 Inc WSO2 Inc
  • 3. 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: http://blog.afkham.org • Senaka Fernando – PMC member Apache Axis & incubator, committer Web Services – Member, Apache Software Foundation – Product Manager & Associate Tech Lead, WSO2 Inc © WSO2 2011
  • 4. Agenda • Core Axis2 architectural concepts • How Axis2 has been multi-tenanted
  • 5. What is Axis2? • Axis2 is a Web Services engine • Successor to the widely used Apache Axis SOAP stack.
  • 6. Message Handling • To fully support the Web services stack (including WSRM, WSSec, WSSecureConversation, etc) – We need to support a pluggable message handling model Implementation Transport handler Service SOAP message Internals of Axis2
  • 8. 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 Services 8
  • 9. Basic Composability WS-Security WS-ReliableMessaging WS-AtomicTransactions Transactional Secure Secure Secure Reliable Transactional Reliable Reliable Transactional Advanced Web Services 9
  • 10. 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 10
  • 11. Composability example Advanced Web Services Core Axis: WS with Apache Axis2 11 © WSO2 Inc. 2006
  • 12. 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
  • 13. 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
  • 14. Phases, Modules, Handlers Transport Pre- Post- Dispatch Dispatch In dispatch Phase rule handler1 handler2 Module Axis2 Internals of Axis2
  • 15. 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 Axis2 15
  • 16. Axis2 – Run Time Message Context Engine XML Trans Message Application Phase Phase Phase Message port Receiver X Y Z Internals of Axis2 16
  • 17. Axis2 – Inside Message Context MessageContext abstract class <soap:Envelope> Execution <soap:Body> Chain <myNS:OrderSushi> Handlers ... </myNS:OrderSushi> </soap:Body> </soap:Envelope> “property1” Boolean.TRUE “property2” someObject Property Bag Message • Pointers to OperationContext, ServiceContext, ConfigurationContext Internals of Axis2 17
  • 18. 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
  • 19. Dispatching • Two aspects of dispatching – Finding the corresponding descriptions – Finding the corresponding contexts • Default dispatchers – AddressingBasedDispatcher – RequestURIBasedDispatcher – SOAPActionBasedDispatcher – SOAPMessageBodyBasedDispatcher Internals of Axis2
  • 20. 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 20
  • 24.
  • 25. 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 Axis2 25
  • 26. 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 Axis2 26
  • 28. Tenants & Super Tenant Tenant: foo.com Super Tenant Tenant: bar.com
  • 29. 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 Internals of Axis2 29
  • 30. Axis2 Repository axis2.repo services foo.aar bar.aar modules abc.mar xyz.mar
  • 31. How Class Loading Hierarchy is Built Internals of Axis2
  • 32. Tenant Axis2 Repo Tenant: foo.com Super Tenant Tenant: bar.com
  • 33. Tenant Axis2 Repo Management
  • 35. Pluggable Deployers Deployment Engine POJO Webapp Services Data JAXWS Services Services
  • 36. Pluggable Deployers Tenant: foo.com Super Tenant Tenant: bar.com
  • 38. 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
  • 41. Ghost Deployer - Performance Initial Response Time (ms) Without GD With GD Number of artifacts
  • 43. 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
  • 44. 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
  • 48. 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
  • 49. Recap • Axis2 concepts – Messaging, deployment, configurations & contexts • How Axis2 has been multi-tenanted – MultitenantMessageReceiver, lazy loading, ghost artifact deployer, data, logging, metering/throttling/billing