Tuesday, October 4, 2011

WSO2 Product Stack - Overview

It's been awhile since I jotted my Last Blog. So, as a new start I will just introduce the middelware ala-carte that WSO2 provides. For a reader who may follow the blog will find it weird if I just use product acronyms. So just thought of taking some time off to completely introduce our platform. 


What fascinates me about WSO2 is not only it's technologies but it's people, the culture and it's vision. At WSO2, people are treated not as resources but as human-beings !!; which is true when it comes to the software industry because even the processes are ultimately driven by people. For a Software Company to be successful, it requires the WSO2 family to go through tireless days, long hours and of course complaining households.


What WSO2 products have in different, with other vendors who are out there is the underlying Carbon Framework. WSO2 Carbon is based on Java OSGi technology which allows components to be dynamically installed, started, stopped, updated, and uninstalled, as well as eliminating component version conflicts. This facilitates WSO2 middleware products with a consistent set of enterprise-class management, security, clustering, logging, statistics, tracing, throttling, caching, and other capabilities as well as a management UI framework[1], which basically tells you that all the products that are in the Product Stacks Starting point is Carbon and every feature is built on top of it;


For eg; WSO2 Carbon + Mediation + Proxy                    = WSO2 ESB
              WSO2 Carbon + BPEL Process + Process UI    = WSO2BPS
             WSO2 Carbon + Service Hosting                          = WSO2AS




This is one prominent and a unique feature of the WSO2 middleware stack, since all these components are like building blocks, i.e. plug n play , and since the underlying framework is unique these are cross compatible with other WSO2 products. This has enabled us to stimulate real world applications to map effectively to the WSO2 Products and deliver them as effective and efficient Custom SOA Solutions to our Clients. Such SOA Solutions, I'm sure I will talk of rarely in the near future.


Now, someone may wonder whether is it only WSO2 products? Well.. the answer is NO.... 


All WSO2 products are open source and come under Apache Software Licence[2]; i.e. You are free to use, free to develop applications over it and free to use in production; you just have to pay us if you're going to buy support[3]. Therefore, no one can directly say that "so and so" are the only customers that uses WSO2 solution in production. There could be millions of users who are out there that uses. We are driven with passion to develop technologies. Hence we encourage the open source community to use products, drop comments and help improve our products and infact help the community at large; so that we have some 'cool' competition out there !!




During this post, I'll touch on the WSO2 Product Platform and its available features.  We could further discuss on various methodologies to map real world examples using the WSO2 Middle-ware stack in the upcoming blogs.


Our Product Stack comprises of;
WSO2ESB, WSO2BRS, WSO2GREG, WSO2IS, WSO2BAM, WSO2MB, WSO2GS, WSO2BPS, WSO2MS, WSO2DSS, WSO2AS, WSO2CEP 


A Small Introduction and Key features could be outlined as below.          


WSO2ESB 
Out of the product platform this is one product that does marvel. It's not that other products have much features :) I was involved with QA work for the ESB product for nearly an year and saw what this can really do. In any SOA Solution the key product would be an ESB. Since it does all the routing of messages to other components. 
WSO2ESB was first released in par with the Apache Synapse[4] with extended features and since then we have done a series of major releases over the years.
Latest stable released version is ESB 4.0.0.
Features include and does not limit to:

  • Proxy services - facilitating synchronous/asynchronous transport, interface (WSDL/Schema/Policy), message format (SOAP 1.1/1.2, POX/REST, Text, Binary), QoS (WS-Addressing/WS-Security/WS-RM) and optimization switching (MTOM/SwA).
  • Non-blocking HTTP/S transports based on Apache HttpCore-NIO for ultra-fast execution and support for thousands of connections at high concurrency with constant memory usage.
  • Built in Registry/Repository, facilitating dynamic updating and reloading of the configuration and associated resources (e.g. XSLTs, XSD, WSDL, Policies, JS configurations ..)
  • Easily extensible via custom Java classes (mediator and command)/Spring configurations, or BSF Scripting languages (Javascript, Ruby, Groovy, etc.)
  • Built in support for scheduling tasks using the Quartz scheduler.
  • Load-balancing (with or without sticky sessions)/Fail-over, and clustered Throttling and Caching support
  • WS-Security, WS-Reliable Messaging, Caching; Throttling configurable via (message/operation/service level) WS-Policies
  • Lightweight, XML and Web services centric messaging model
  • Support for industrial standards (Hessian binary web service protocol/ Financial Information eXchange protocol and optional Health Level-7 protocol)
  • Enhanced support for the VFS (File/FTP/SFTP), JMS, Mail transports with optional TCP/UDP transports and transport switching among any of the above transports
  • Support for message splitting; aggregation using the EIP and service callouts
  • Database lookup & store support with DBMediators with reusable database connection pools
  • WS-Eventing support with event sources and event brokering
  • Rule based mediation of the messages using the Drools rule engine
  • Transactions support via the JMS transport and Transaction mediator for database mediators
  • Internationalized GUI management console with user management for configuration development
  • Integrated monitoring support with statistics, configurable logging and tracing
  • JMX monitoring support and JMX management capabilities like, Graceful/Forceful shutdown/restart


WSO2BRS
BRS assists to provide you with the suitable capability of codifying, executing, and maintaining your organization's decisions. 


Key Features:

  • Expose Business rules as a web Service
  • Drools based back end runtime
  • Management User Interface for creating, deploying, monitoring, and testing rule services
  • JSR 94 Compliant
  • Based on carbon platform it provides all the QOS features such as Security, Reliable Messaging, caching etc ...



WSO2GREG

WSO2 Governance Registry is an integrated SOA registry-repository, which supports you to efficiently manage your organization's growing SOA. The WSO2 Governance Registry provides an easy-to-use metadata repository complete with support for full versioning, lifecycle management, a rich model for users/roles/permissions, and social features such as tagging, rating and comments. All these could be done via a Simple Management Console.

  • Storing and managing arbitrary resources and collections
  • Tagging, commenting and rating
  • Managing users and roles
  • Authentication and authorization on all resources and actions
  • Resource / collection versioning and rollback
  • Advanced search capabilities - tags, users, etc.
  • Built in media type support for common types (WSDL, XSD)
  • Built in support for known repository types
  • Dependency management - maintain relationships between dependent resources for impact analysis
  • Pluggable media type handlers for handling custom media types
  • Pluggable custom UIs for resource types
  • Activity log and monitoring with filtering support for the activity logs
  • Atom Publishing Protocol (APP) support for reading/writing the data store remotely
  • Subscribe to resources, collections, comments, tags, etc. with any standard feed reader (Bloglines, Google Reader, etc)
  • Intuitive User Interface with an Ajax-based Web 2.0 interface
  • Internationalization
  • Support for deploying back end and front end (UI) in separate servers
  • WSDL Tool to import service information from a given WSDL, and WSDL custom-view
  • WSO2 Governance Registry federation - mounting a remote WSO2 Governance Registry to a specified location
  • Based on the OSGi based WSO2 Carbon architecture: this is a unification of all Java based products from WSO2
  • Advanced service governance through, discovery, impact analysis, versioning and automatically extraction of service meta data
  • Dashboard support with gadgets with design-time and run-time governance information
  • Advanced Life cycle management with checklists, and scripting support
  • Validation policies. e.g. WSDL Validation, WS-I Validation and Schema Validation
  • Eventing and notifications
  • Supports remote links, symbolic links for resources
  • Attach remote WSO2 Governance Registry instances, providing one interface for many WSO2 Governance Registry instances
  • Support for processing custom URL patterns via pluggable URL handlers
  • Support for custom query languages via pluggable query processors
  • Import/export resources and collections
  • Improved transaction support
  • Support for WebSphere, WebLogic, and JBoss
  • Provisioning and feature management support for WSO2 Carbon family of products
  • Support for clustering
  • Check-in/Checkout tool
  • Gadgets for impact analysis on services and registry resources
  • Dynamic Handler configuration, and simulation
  • Tree-based Resource view
  • API to govern SOA artifacts
  • Complete Web Services API for Registry
  • WS-Discovery support
  • Platform, and Group/Cluster based deployment model, with support for adding remote mounts
  • Support for multiple server instances
  • E-mail verification for subscriptions
  • Hierarchical permission model with granular and extensible permissions
  • Governance Archive for uploading WSDLs and Schemas with imports
  • Ability to update resource content by uploading
  • Rich text editor for editing text resources
  • XML editor for editing handler, lifecycle and service UI configurations
  • Support for deploying Carbon Applications (C-App)
  • Content Search
  • WebDAV support
  • Open-Social API
  • JCR API




WSO2IS
The WSO2 Identity Server provides multidisciplinary identity and entitlement management, which enable the tight and powerful security mechanisms that you need in your organization. The WSO2 Identity Server supports a set of state-of-the art security mechanisms such as OpenID and Information Cards for authentication, and XACML for fine-grained authorization. It integrates easily into existing user stores such as LDAP or Active Directory, supports multi-factor authentication, and much more. 


Features:

  • Entitlement Engine with XACML 2.0 support
  • Claim based Security Token Service with SAML 1.1/SAML 2.0 support
  • Information cards support for SAML 1.1/2.0
  • OpenID Provider
  • Extension points for SAML assertion handling
  • XMPP based multi-factor authentication
  • Improved User Management
  • Claim Management
  • User Profiles and Profile Management
  • XKMS
  • Separable front-end and back-end - a single front-end server can be used to administer several back-end servers
  • Information Cards provider supporting Managed Information Cards backed by user name / password and self-issued cards
  • Multi-factor authentication with Information Cards



WSO2BAM
WSO2 Business Activity Monitor can be used to monitor any SOA or non-SOA deployments in your enterprise. It can be run as a stand alone server and its simple event driven model can be used to publish data into the BAM server and visualized in a variety of dashboards. Since the main dashboard supports gadget technology, users can also write their own gadgets according to their unique monitoring needs.
Features Extent to:

  • Support for collecting data on service invocations and message mediations
  • Straight through processing - Polling and Eventing based models for automated data collection without manual intervention
  • Real time activity monitoring with zero latency - No time gap between data collection and availability of data for monitoring
  • Analytics for historical data on service invocations and message mediations summarized over various time dimension intervals
  • Data visualization with dashboards and reports
  • Ability to define and monitor key performance indicators (KPI) with dashboards and reports
  • Provision to extend monitoring capabilities by customizing dashboard gadgets
  • Built-in support for monitoring WSO2 WSAS and WSO2 ESB
  • Ability to extend the current monitoring model with user defined data by collecting custom data formats for monitoring
  • Multiple DBMS support (H2 - default, MySQL and MSSQL)
  • Message level data correlation using Activity ID (Experimental)




WSO2MB



WSO2 Message Broker brings messaging and eventing capabilities into your SOA framework. The underlying messaging framework of the WSO2 Message Broker is powered by Apache Qpid, one of the leading Advanced Message Queuing Protocol (AMQP) messaging engines available today. The Message Broker is compliant with the latest WS-Eventing specification. It's easy-to-use Amazon SQS API provides a standard interface for your message queuing requirements.The underlying JMS engine handles WS-Eventing/JMS synchronisation that enables exposing and consuming your events using two different standard API's.


Features include: 

  • WS-Eventing
  • Message store based on Amazon SQS API
  • JMS Pub/Sub and Queuing



WSO2GS
The WSO2 Gadget Server brings Gadget technology into the enterprise by providing a customized end-user portal that makes it easy for teams to build attractive and effective portals in record time. Built on top of the Google Gadget Specification, the WSO2 Gadget Server allows Google Gadgets to be developed and deployed in a simple, decentralized manner. Any developer with basic web development skills can create a custom gadget easily and many third-party Google Gadgets are available to add to a user’s personalized dashboard.


Features include:

  • Enterprise class Portal interface - Users get to organise gadgets in a familiar portal interface. Sets of gadgets can be organised using tabs. Individual gadgets can be moved between tabs as well as cloning an entire tab to be used as the foundation for a new tab.
  • Client Side Gadgets - Any gadget adhering to the Google Gadget Specification can be added to the portal. These gadgets are basically HTML and Javascript embedded in XML. They can be hosted in any publicly accessible Web Server. The URL of the gadget XML is used to add them to the Portal.
  • Enterprise Gadget Repository - Organisations can maintain a central repository of gadgets. Portal users can browse and add gadgets from this repository to their individual portals, while rating and commenting on individual gadgets.
  • Anonymous Mode - Users can experience most of the Portal's functionality 'excluding' the gadget Repository even before registration and sign in. All data in this mode will be stored in the user's browser.
  • OAuth Support for Gadgets - Gadget Server enables to add OAuth keys for gadgets to communicate with external APIs such as Google GData, Twitter etc.
  • Inter-gadget Communication - Gadget Server allows inter gadget communication.
  • I18n Support for Gadget - Gadget Server supports internationalization of gadgets.
  • User registration, sign-in and external user stores - User registration and sign in can be done using OpenID or Infocards in addition to the traditional user name and password based scheme. Also the Gadget can be integrated to a external user stores such as LDAP and AD.
  • Management Console - Helps configure and manage the server, its users and the Enterprise Gadget Repository via an intuitive browser based administrative interface.
  • Custom Layouts for Tabs - Gadget Server users can choose a desired layout form six different layouts when creating a new tab.
  • Role Based Permissions - Gadgets can be restricted based on users role.
  • Make SOAP Request Support - Not only REST style requests, gadgets written for WSO2 Gadget Server can consume SOAP only web service via make SOAP Request.
  • Theming Support - Gadget Server users can create custom templates for the portal UI, and add them via Gadget Server management console.
  • Gadget Archive Deployment - With WSO2 Carbon Application deployment, users can, write gadgets using Carbon Studio and deploy the gadget archive in to the Gadget server.



WSO2BPS
Business processes are the lifeblood of an enterprise. The WSO2 Business Process Server includes features for managing, securing and defining business processes within an organization. Powered by Apache ODE, it provides a complete Web-based graphical console to deploy, manage, and view processes and process instances, as well as the capability to deploy custom extensions for the WS-BPEL language.
Features include:

  • Deploying Business Processes written in compliance with WS-BPEL 2.0 Standard and BPEL4WS 1.1 standard.
  • Managing BPEL packages, processes and process instances.
  • BPEL Extensions and XPath extensions support
  • Instance recovery(Only supports 'Invoke' activity) support through management console
  • OpenJPA based Data Access Layer
  • WS-Security support for business processes.
  • Support for invoking secured(Using WS-Security) partner services.
  • Clustering support
  • BPEL Package hot update which facilitate Versioning of BPEL Packages
  • E4X based data manipulation support for BPEL assignments
  • Configure external data base system as the BPEL engine's persistence storage
  • Caching support for business processes.
  • Throttling support for business processes.
  • Transport management.
  • Internationalized web based management console.
  • System monitoring.
  • Try-it for business processes.
  • SOAP Message Tracing.
  • New end-point configuration mechanism based on WSO2 Unified Endpoints.
  • Customizable server - You can customize the BPS to fit into your exact requirements, by removing certain features or by adding new optional features.



WSO2MS
The WSO2 Mashup Server supports the composition of Web Services, feeds, scraped Web pages, files and other information sources into new Web Services. It provides a simple file-based deployment model, auto-generation of metadata and runtime resources for the deployed mashups, management console to easily manage the mashups and many other useful features that help you incorporate Web 2.0 information an capabilities into your enterprise SOA.


Features include:

  • Hosting of mashup services written using JavaScript with E4X XML extensions
    • Simple file based deployment model
  • JavaScript annotations to configure the deployed services
  • Auto generation of metadata and runtime resources for the deployed mashups
    • JavaScript stubs that simplify client access to the mashup service
    • Code templates for developing rich HTML or Google Gadget interfaces
    • TryIt functionality to invoke the mashup service through a web browser
    • WSDL 1.1/WSDL 2.0/XSD documents to describe the mashup service
    • API documentation
  • Ability to bundle a custom user interface for the mashups
  • Many useful Javascript Host objects that can be used when writing mashups
    • WSRequest: invoke Web services from mashup services
    • File: File storage/manipulation functionality
    • System: Set of system specific utility functions
    • Session: Ability to share objects across different service invocations
    • Scraper: Extract data from HTML pages and present in XML format
    • APPClient: Atom Publishing Protocol client to retrieve/publish Atom feeds with APP servers
    • Feed: A generic set of host objects to transparently read and create Atom and RSS feeds
    • Request: Ability get information regarding a request received
    • HttpClient: A hostobject equvalent with Apache HttpClient, which help you to do HTTP related stuff
  • Support for recurring and longer-running tasks
  • Support for service lifecycles
  • Ability to secure hosted mashups using a set of commonly used security scenarios
  • Management console to easily manage the mashups
  • Equinox P2 based provisioning support - extend your Mashup Server instance by installing new P2 features. See https://wso2.org/wiki/display/carbon/p2-based-provisioning-support
  • User based mashup deployment model
  • Ability to upload mashups with it's resources as a zip



WSO2DSS
WSO2 Data Services Server provides a convenient Web service interface for data stored in sources such as relational databases, CSV files & MS-Excel files. With WSO2 Data Services Server, data can be exposed and accessed in a secure (using WS-Security) and reliable (using WS-ReliableMessaging) manner; data is also made available for mashing-up with other Web services.
Features include:

  • Support for large XML outputs
  • Content Filtering based on User's role
  • Support for named parameters
  • Ability to configure schema type for output elements
  • Mixing multiple data sources in nested queries
  • Distributed transaction support
  • Oracle Ref Cursor support
  • Support for multiple data source types
  • Clustering support for High Availability and High Scalability
  • Full support for WS-Security, WS-Trust, WS-Policy and WS-Secure Conversation and XKMS
  • JMX and Web interface based monitoring and management
  • WS-* and REST support
  • Data validations



WSO2AS

WSO2 AppServer is an enterprise-ready application server based on the award-winning WSO2 Carbon framework. Being the successor of the WSO2 Web Services Application Server(WSAS), WSO2 Application Server(AS) supports web application deployment and management in addition to its award winning web services management capabilities. Coupled with WSO2 Carbon Authentication/Authorization feature, users now have the capability to manage their applications that range from Web Services, business processes to web applications in a unified manner within the AppServer management console itself.
With capabilities such as clustering and high availability, Eclipse IDE integration, and full support for key WS-* and REST standards, AppServer is becoming the platform of choice for developers and SOA architects.
Features include:

  • Web Application deployment and management within the App Server
  • AppServer tooling - AppServer related artifacts can be easily generated using WSO2 Carbon Studio
  • Clustering support for High Availability & High Scalability
  • Full support for WS-Security, WS-Trust, WS-Policy and WS-Secure Conversation and XKMS
  • JAX-WS support - Deploy any JAX-WS annotated service and engage WS-* protocols through the management console.
  • JMX & Web interface based monitoring and management
  • WS-* & REST support
  • GUI, command line & IDE based tools for Web service development
  • Equinox P2 based provisioning support
  • WSDL2Java/Java2WSDL/WSDL 1.1 & try it(invoke any remote Web service)



WSO2CEP


Complex Event Processing, or CEP, is basically an event processing concept that can be used in identifying the most meaningful events within the event cloud, analyzing their impact, and taking subsequent action in real time. WSO2 Complex event processing server introduces complex event processing to SOA world. WSO2 Complex Event Processing Server supports deployment and management of instances of complex event processing engines like Drools Fusion, Esper and managing event streams using them.


Features include:

  • Bring CEP to SOA by processing XML events and produce results as XML events
  • Ability to define different event streams, queries and out put streams and store them in the registry as a bucket
  • Support EsperTM and fusion back end runtimes
  • Ability to filter data from the XML event using xpath and format the result as an XML event
  • Support different types of brokers WS-Event, JMS to receive publish events
  • Define and store such different broker configurations
  • Administrative Console to create bucks, add subscriptions etc..
  • Ability to specify CEP queries inline or pick from the registry



The product related information are all extracted from our Developer Portal[1]. You can find a load of articles; KB written to be a master of WSO2 Products. As I stated earlier; All you need is passion !!


[1] http://wso2.org/library/carbon
[2]  http://www.apache.org/licenses/LICENSE-2.0.html
[3] http://wso2.com/support/
[4] http://synapse.apache.org/





3 comments:

  1. Is there any blog/atricle out there that show how to integrate WSO2 CEP with WS02GS. My requirement is once the CEP does its job and publishes new events to the output broker, I would like those events to be displayed on a UI for the end-user.
    Many thanks in advance for all the suggestions.

    Best Regards
    LB

    ReplyDelete