[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

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
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.