[Download] | [Documentation Index] | [Release Note]

Architecture Guide

This document provides a brief overview of the Architecture of WSO2 AppServer. First we will go through the components which provides different functionalities. Then we'll have a look at some common use case flows within the AppServer Architecture.

Introduction

WSO2 AppServer is a lightweight, high performant and integrated Web services middleware platform. For it's Web services related functionalities, AppServer uses components from Apache WS-* stack. Apache Axis2 is the heart of AppServer SOAP processing engine and other components like Rampart, Sandesha2, Neethi etc. provides the other WS-* capabilities.

Architecture

Architecture

Figure: WSO2 Application Server Architecture

As shown in the above figure, Apache Axis2 Kernel sits in the middle as the SOAP processing engine and integrates all the WS-* components together. Following are the additional modules which provide extended functionalities.

  • Apache Neethi : WS-Policy implementation
  • Apache Axiom : High performant, pull based XML object model
  • Apache XML Schema : Lightweight schema object model that can be used to manipulate and generate XML schema representations
  • Apache WSS4J : WS-Security implementation
  • Apache Rampart : Security module for Axis2
  • Apache Sandesha2 : WS-ReliableMessaging implementation for Axis2
  • Apache Rahas : WS-Trust implementation for Axis2
  • Addressing : WS-Addressing implementation which is inbuilt for Axis2

WSO2 AppServer supports number of transports through which the clients can send requests. As listed in the above figure, HTTP/S, JMS, Mail, XMPP and TCP are the main transports that are supported. In addition to that, any transport can be easily plugged in using the API's provided by Axis2.

When it comes to deploying Web services, AppServer supports deploying different types of services. Service type depends on the way the service is developed. However, finally all services will be deployed within the Axis2 engine and all features are available for all service types.

  • Axis2 : Basic type of services which are supported by Axis2. These services should be deployed as a .aar file and a service descriptor file (called services.xml) should be included in the service archive.
  • JAX-WS : Services which are written using Java annotations (JSR 181). No need for any descriptor files and can be deployed as a .jar file.
  • Jar : Simple POJO services. Compiled Java service can be uploaded as a .jar file and you can create the service using the provided wizard by customizing service metadata. Internally AppServer will create an Axis2 service from the provided information and deploy it in the engine.
  • Spring : Converting a Spring bean into a Web service. Again AppServer will internally create the needed descriptor files and deploy it as an Axis2 service.
  • Data Services : These services expose data in a database through a Web services interface. All WS-* functionalities like security and reliable messaging are available for these services as well.

The WSO2 Governance Registry is something inherited from the Carbon platform. It acts as the metadata repository for the deployed services. In addition to that, users can use it for governance features as well.

In the standalone mode, WSO2 AppServer runs on top of an Embedded Tomcat instance. This is from where it inherits the Webapp deployment capabilities. In addition to that, AppServer can be deployed on other Application servers (as a Webapp) like WebSphere, WebLogic and Jboss as well.

Use Cases

Use Cases

Figure: Common Use Cases

Above figure shows some use cases for WSO2 AppServer. WebApp clients can call Web applications deployed inside AppServer through Tomcat transports (HTTP/S). When it comes to Web service invocations, clients can invoke services through number of transports which are listed above. And also services can be of different types as described above. AppServer management console can be used to deploy, configure, manage and monitor all kinds of artifacts which are deployed in the server.