SlideShare a Scribd company logo
1 of 61
UNIVERSITY OF MORATUWA

                         Faculty of Engineering

            Non-GPA Module 3992: Industrial Training

                         TRAINING REPORT



Name                         : B. S. Wijeweera

Registration Number          : 090587J

Field                        : Computer Science and Engineering

Training Establishment       : WSO2 Lanka (pvt) Ltd

Training Period              : 15.05.20121 -28.10.2012

Date of Submission           : 09.11.2012
PREFACE

This document contains the internship period I had from 15th May 2012 – 29th October 2012
at WSO2 Lanka (pvt) Ltd as a trainee software engineer. This document contains three main
chapters that explain different aspects of experiences I got through internship period.
Therefore this contains basic information about the training establishment and descriptive
information on the training I got and my opinions on the overall internship period considering
the whole experience.

The initial chapter is dedicated for the detailed information on the training establishment. It is
difficult to work comfortably without having a sound knowledge about the functionalities,
procedures, hierarchy and structure of the company. Therefore meanwhile giving my
maximum contribution to the company I have to have a good understanding on the business
activities, technologies, standards and strategies they follow.

The second chapter is completely for expressing the experience I had during internship
period. This includes all the technical works I have covered, new technologies I have gone
through, non-technical experiences and difficulties I had as well. This describes the projects I
have covered which were given to me and how I overcome the obstacles I met. To explain the
implementation of projects I have used some diagrams as I feel that would be the best option.
This section describes in detail about the Resequencing Message Processor implementation
and JDBC Message Store implementation in the WSO2 Enterprise Service Bus along with
the concepts, tools and technologies which I got familiar with. The implementation designs
and deriving final decisions on implementations are also included with in the section. Non-
technical experiences such as inter-house competitions, celebrations had a great effect on
building good personality and collaboratively work with the rest of the staff.

In the last chapter, I have expressed my personal feelings on the whole training period. In
addition to that I have provided a personal a personal assessment on my experience from the
beginning to the end of training program along with suggestions to improve.




                                                                                          Page | i
ACKNOWLEDGEMENTS

On my report about internship period, it’s my privilege to thank for all the people who
contributed to make this period a great experience for my life. If not for the commitment of
them, from arranging training establish selections to the end of entire 24 weeks, it would not
be this much interesting.

I should thank Dr. Chandana Gamage, the Head of Department, Computer Science and
Engineering, University of Moratuwa for the effort taken to provide us with training
establishments. I should also grateful to Ms. Sachini Weerawardhana, the Industrial Training
Coordinator for her dedication to make sure every student is getting a good training
establishment, organizing company presentations and providing necessary guidance in
selecting a suitable training place for requirements.

I am grateful to Mr. Nihal Wijeyewickrame, the director of Industrial Training Division,
University of Moratuwa and all the staff in Industrial Training Division for providing
opportunity to have a great internship period and examining the quality of training. Also I
should thankful to NAITA (National Apprentice and Industrial Training Authority) for
providing guidance for successful training experience from the beginning to the completion
of internship period.

I must thankful to Dr. Sanjiva Weerawarana, Founder, Chairman and CEO of WSO2 for
providing us this golden opportunity to work within a globally recognized company with a
friendly environment. I should thankful to Mr.Waruna Ranasinghe, Senior Software Engineer
and Mr. Thilina Mahesh, Senior Software Engineer who interviewed and recommended me
for the internship at WSO2. I should thankful to Mr. Samisa Abeysinghe, VP of Engineering
for giving us the guidance on how to improve our knowledge and skills with the environment
provided by WSO2 to build our career. I am thankful to Ms. Udeshika Ratnavira, Senior
Manager, Administration and HR for her help given to solve issues I came up with and
coordination with the university. I should also thankful to Mr. Prabath Siriwardena, Senior
Architect for appointing us to different products within the company. Also I should thankful
to Dr. Srinath Perera, Senior Software Architect for his friendly opinions and suggestions to
make my projects success.

I am so much grateful to the ESB (Enterprise Service Bus) team members for all the support
given throughout my internship period at WSO2, because without them I won’t be able to

                                                                                      Page | ii
catch up things this much easily. Special thank should go to Mr. Kasun Indrasiri, associated
Tech Lead and Mr. Miyuru Wanninayaka, senior software engineer for their mentorship
during my period at WSO2. I should highly appreciate their clarifications done whenever I
got struck, although they have very busy schedules. I also should thankful to Mr. Charith
Wickramarachchi, a senior software engineer who was left for his PhD during my internship
period, guided me a lot even after left the WSO2, to complete Resequencing Message
Processor project. I am also thankful to other members in ESB team, Mr. Dushan
Abeyruwan, a senior software engineer, Mr. Isuru Udana, a software engineer and Ms.
Charitha Madurangi, a software engineer for the friendly environment provided. Even though
outside the team I assigned I should thankful to Mr. Shammi Jayasinghe, a senior software
engineer and Mr. Hasitha Abeykoon, a software engineer, for their help since I have closely
worked with their product too.

I should also thankful to Mr. Dharshana Warusawithana, a software engineer and Mr. Nuwan
Wimalasekara, a software engineer who helped me a lot during test automation period.
Without them I won’t be able to solve problems I faced and do well in writing automated
tests.

I am thankful to each and every technical and non-technical member in WSO2 family for the
friendly environment provided and help me as soon as whenever I need. Because of that I did
not have to bother about asking for technical and non-technical help.

Finally, thank you very much everyone for making my internship period such a remarkable
experience for my life.




                                                                                   Page | iii
TABLE OF CONTENTS



1.     Introduction to the Training Establishment ....................................................................... 1

     1.1    WSO2 .......................................................................................................................... 1

     1.2    History of WSO2 ......................................................................................................... 3

     1.3    Vision of WSO2 .......................................................................................................... 3

       1.3.1      Reinvent the Technology ..................................................................................... 3

       1.3.2      Reinvent the Business Relationship ..................................................................... 4

       1.3.3      Reinvent the Support Model ................................................................................ 4

       1.3.4      Create a Great Place to Work............................................................................... 5

     1.4    WSO2 Business Model ............................................................................................... 5

     1.5    Support and Service Model ......................................................................................... 6

       1.5.1      Community Support ............................................................................................. 6

       1.5.2      Evaluation Support............................................................................................... 6

       1.5.3      Development Support .......................................................................................... 7

       1.5.4      Production Support .............................................................................................. 7

       1.5.5      Quick Start Support.............................................................................................. 7

       1.5.6      TurnKey Packages ............................................................................................... 8

     1.6    Organizational Structure ............................................................................................. 8

       1.6.1      Employee Hierarchy ............................................................................................ 8

       1.6.2      Exchanging Ideas ................................................................................................. 9

     1.7    WSO2 Team .............................................................................................................. 10

     1.8    WSO2 Products and Services.................................................................................... 12

       1.8.1      Enterprise Service Bus (ESB) ............................................................................ 13

     1.9    Performance of WSO2 .............................................................................................. 15

       1.9.1      Strengths ............................................................................................................ 15

       1.9.2      Weaknesses ........................................................................................................ 16

                                                                                                                                Page | iv
1.9.3       Opportunities...................................................................................................... 17

       1.9.4       Threats................................................................................................................ 17

     1.10       Service to Sri Lankan Society ............................................................................... 17

     1.11       Suggestions to improve ......................................................................................... 18

2.     Training Experience ......................................................................................................... 19

     2.1    Stepping in to WSO2 Team ...................................................................................... 19

     2.2    Induction.................................................................................................................... 20

     2.3    Development Environment ....................................................................................... 20

     2.4    Axis2 Web Services .................................................................................................. 22

     2.5    Trying out WSO2 ESB .............................................................................................. 23

     2.6    Resequencing Message Processor ............................................................................. 23

       2.6.1       Introduction ........................................................................................................ 24

       2.6.2       Resequencer ....................................................................................................... 24

       2.6.3       Architecture........................................................................................................ 24

       2.6.4       Resequencing Processor..................................................................................... 25

       2.6.5       Selecting initial sequence number ..................................................................... 26

       2.6.6       Resequencing Processor Configuration ............................................................. 27

       2.6.7       Additional Modifications Made ......................................................................... 28

     2.7    Test Automation ........................................................................................................ 29

     2.8    JDBC Message Store................................................................................................. 31

       2.8.1       Introduction ........................................................................................................ 31

       2.8.2       Implementation .................................................................................................. 31

       2.8.3       Advantages over other message stores .............................................................. 32

       2.8.4       Configuration of JDBC Message Store.............................................................. 33

       2.8.5       Final architecture ............................................................................................... 34

     2.9    Implementing EAI Patterns using WSO2 ESB ......................................................... 34

       2.9.1       Patterns............................................................................................................... 35


                                                                                                                                 Page | v
2.9.1.1 Implementing Test Message EAI Pattern....................................................... 35

            2.9.1.2 Implementing Idempotent Receiver EAI Pattern ........................................... 38

            2.9.1.3 Implementing Normalizer EAI Pattern .......................................................... 40

     2.10        Training Sessions................................................................................................... 43

     2.11        Non-Technical Experiences ................................................................................... 44

       2.11.1       Demonstration .................................................................................................... 45

       2.11.2       WSO2 Basket Ball Matches............................................................................... 45

       2.11.3       Lunch out for interns.......................................................................................... 45

       2.11.4       Celebrating Seven .............................................................................................. 45

3.     Conclusion ....................................................................................................................... 46

     3.1      Importance of Industrial Training ............................................................................. 46

     3.2      Satisfaction on training establishment....................................................................... 46

     3.3      Industrial Training Program ...................................................................................... 47

ANNEX.................................................................................................................................. viii

REFERENCES ......................................................................................................................... xi

ABBREVIATIONS .................................................................................................................xii




                                                                                                                               Page | vi
LIST OF FIGURES

Figure 1.1 WSO2 Company Logo ............................................................................................. 1
Figure 1.2 Employee Hierarchy ................................................................................................. 9
Figure 2.1 Resequencing EAI Pattern...................................................................................... 24
Figure 2.2 Resequencing Processor Design ............................................................................. 24
Figure 2.3 Selecting Starting Sequence Number ..................................................................... 27
Figure 2.4 Construction of Persisting Message ....................................................................... 31
Figure 2.5 Architectural Diagram of JDBC Store ................................................................... 34
Figure 2.6 Test Message Component Diagram....................................................................... 35
Figure 2.7 Idempotent Receiver Pattern Design ...................................................................... 39
Figure 2.8 Normalizer Pattern Design Diagram ...................................................................... 41




                                                                                                                    Page | vii
1. Introduction to the Training Establishment

       1.1 WSO2




                                 Figure 1.1 WSO2 Company Logo

The name WSO2 stands for Web Services Oxygen, since the company is truly inspired with
Web Services and finding enterprise solutions in the web space. The company was
established in 2005 by pioneers in XML (Extensible Markup Language) and Web Service
technologies following open source standards. WSO2 offers a complete 100% free and open
source SOA (Service Oriented Architecture) platform with cloud approach through WSO2
Stratos, the world’s only 100% open source PaaS (Platform as a Service) by recent times.

The company is mainly focused on developing and producing world class products using the
based on the free and open source Apache software stack. Therefore all the products are
released under the Apache Software License. WSO2 has a team of locally and globally
recognized software engineers who are really passionate with open source developments and
enjoy their dedication to the industry. Most of the software engineers work there are
committers of globally accepted software projects like Synapse, Axis2, Rampart, Sandesha,
Transport, Commons, Cassandra of Apache Foundation and other software communities
including Eclipse, Ruby and Linux. Products of WSO2 are developed on top of a core called
“core carbon framework” which is using the Apache Axis2 as the base engine. The company
encourages employees to come up with their own innovations to improve the framework and
build their own personal brand through those.

WSO2 is currently offering 12 products as web based solutions that have perfectly designed
for a business solution. All WSO2 products can be tuned in to different customer
environments by adding or dropping its features. For an example WSO2 ESB can be used for
fast online transactions with dropping extra components which are not required or as a
transport switcher by adding new features. StratosLive is an invention by WSO2 which
provides all the products 100% free in the cloud environment.




                                                                                    Page | 1
Producing 100% free and open source products WSO2 has made a sustainable business. The
business strategy at WSO2 is providing training, support, development and consultancy for
their products to the interested customers. Since all the products are freely available, anyone
can download them and play with it. If the customers satisfy with the product and willing to
take WSO2 support and training to bring up a business solution for them, then they are
charged for that service. The company also maintains a portal called “WSO2 Oxygen Tank”
which contains a knowledge base, articles, slideshows, webinars, tutorials and screencasts
which create a valuable free online resource for any SOA developer who interested in WSO2
products and technologies used by WSO2 products.

Other than having connections with Apache Foundation, WSO2 has established many
connections around the globe. Some of them are as follows,

           •   SOAP, WSDL and WS-SEC standards
           •   The World Wide Web Consortium (W3C)
           •   Microsoft‟s InterOP Vendor Alliance
           •   NBQSA Competitions
           •   AMQP Working Group
           •   OpenID Foundation
           •   InfoCard Foundation

WSO2 has offices in USA, UK and Sri Lanka with a worldwide customer base with different
industries. The office at UK is mainly aimed for marketing and building up customer
relations. USA office at Palo Alto is currently at growing stages and will soon start
contributing to the development of products. The Sri Lankan branch act as the main research
and development center for WSO2 and have three sub branches at No.59, Flower Road,
Colombo 07, No. 50, Flower Road, Colombo 07 and No.58, Dharmapala Mawatha, Colombo
03.

Even though having just 7 years of experience in industry, WSO2 developments have created
products that can challenge the industrial giants which have been for many years. Some
WSO2 customers have admired with the performance and light-weight solutions that WSO2
came up compared to IBM, Oracle and Microsoft. WSO2 has stated as a top open source
SOA companies with a small team size. It’s proud to say that WSO2 has been able to
highlight Sri Lanka among other countries in software industry while bringing a massive


                                                                                       Page | 2
opportunities and remarking the Sri Lankan contribution to the open source software
industry.

       1.2 History of WSO2

WSO2 has declared its birthday as 04th of August 2005 because lots of important things
happened around that day including incorporation of USA company, incorporation of Sri
Lankan company, incorporation of UK company and finalizing funding. At first the company
came up with the name “Serendib Systems” and later changed to WSO2 because of a request
from an investor [2].

After having the initial investments the company stated its developments step by steps with a
group of talented, skillful people to bring the core carbon framework in to reality. Because of
the sacrifices they did to overcome hard times finally WSO2 raised in the middleware
industry and become ready to compete with the giants who were there for several years.
Currently WSO2 has created a competitive environment for Oracle and IBM companies who
are having similar kind of products.

       1.3 Vision of WSO2

WSO2 always maintains a clear vision on future improvements regarding products,
customers, employees and growth of technologies. Vision of WSO2 is created with the
collaboration of following four main catagories.

            1.3.1   Reinvent the Technology

When WSO2 was establishing, there were giants in industry like Oracle, IBM. But WSO2
believed that they can re-invent the technology so that in-order to achieve the benefits that
current industrial giants did not have. With the advantage of starting a project from scratch,
WSO2 put the full effort to build up Carbon platform, which is currently considered as one of
the most advanced middleware platform. To avoid from foreseeable pitfalls, the platform was
designed to defend issues and increase the performance. By adopting OSGi (Open Services
Gateway initiative) framework, components of framework enables lean, high performance
approach with self-consistency across the platform and provide pluggable behavior. From
that approach user will get the opportunity to use the component what he requires and come
up with a solution for his needs. Beyond being able to customize the products, WSO2 gives
opportunity for building multi-tenancy, elasticity, instant provisioning, monitoring the

                                                                                       Page | 3
performance and make the platform as a service (PaaS) in public and private clouds. In that
manner WSO2 is playing a key role in cloud computing, which is an emerging field in
computing.

           1.3.2   Reinvent the Business Relationship

Although being at the leading edge of technologies, WSO2 has identified the quality of
business relationship with customers as the core value. Because of that WSO2 has taken
necessary steps of being a customer oriented company. All the software are 100% free and
open source and built under a fully open and transparent development process at wso2.org
mailing lists and at mailing lists in the Apache Software Foundation. So there is no license
fees, registrations, limited downloads or trial expiration period as all the products are released
under Apache License 2.0 which means there are no restrictions on using or developing
products. There are no special types of license like Community license or Evaluation license
and one can have the same experience on a particular version of a product.

The unique value that WSO2 provide is the relationship with customers in customizing
products to meet the maximum efficiency that the customer requires. Through highest quality
training, support, consulting services, 24x7x365 production support or a complete solution
will give required unique solution for each customer.

           1.3.3   Reinvent the Support Model

For a successful business it is not just enough to have a good marketing section, but it is
essential to have a very good customer support service which can understand the
responsibility of running the system. Beyond conventional supporting systems, WSO2 uses
online support system, which allows users can direct the issues to the best source of expertise
including WSO2 developers on the product or committers to the open source project.
Through that system WSO2 lets the users to quickly interact with the best person in the world
directly. WSO2 does not uses special people called “Support Engineers” but uses engineers
who contribute to development as they know every nook and corner of the product, and can
give the exact solution that customer requires. When required, WSO2 provide hot fixes,
patches, and service packs to make the system up and running well.

Beyond production support, WSO2 does not force customers to pay for bundle of services
with little amount of value. Instead WSO2 gives opportunity for customers to purchase the


                                                                                         Page | 4
appropriate service they need. That would let the customer to maximize the value of return on
investment as well. WSO2 believe that the successful customers are the best way to make the
company a successful one among rest of the companies in global middleware market.

           1.3.4   Create a Great Place to Work

Developments of WSO2 are mainly going in Sri Lanka. Other than reinventing the
technology, business relationships, and support model WSO2 brought Silicon Valley-style
entrepreneurialism to Sri Lanka which allows employees to work in a good environment.

Maintaining close relationships with top level local universities and building creative spirit,
global leadership in open source technologies, WSO2 turned to be the best place for local
innovators. Because of that WSO2 widens the opportunity of being a contributor of Apache
Foundation, which is a well-known foundation for open source developments.

WSO2 encourage employees without any hesitation to develop personal developments and
even to leave the company for doctoral studies abroad. After studies employees are encourage
joining WSO2, to lay foundation to new companies, or to find an employment in other
organizations where they can apply their talent to make Sri Lanka and the whole world a
better place.

The vision of WSO2 is not based on monetary values but in gaining sustainable benefits to
employees, the company and to Sri Lanka, which is truly admiring. And I believe WSO2 will
be able to get the real values of Sri Lankan brains to do innovative things in open source
world and will become a hotbed for local innovators.

       1.4 WSO2 Business Model

WSO2 offers a 100% FOSS (Free and Open Source) products, which can be downloaded at
free-of-charge by any person and can make changes. Thereafter they can use famous building
tools like Maven to build customized version of that product. This process makes customer to
try on WSO2 products before they bring it in to the business which is completely differ from
the giants in the industry like IBM or Oracle, where the customer has to pay even before
getting the product.

Through an enterprise system customers expect a great performance, low risk, good quality
and availability of 24x7x365 support, where WSO2 identified as the opportunity to earn the


                                                                                       Page | 5
income. Selling software support, providing training, on-site and off-site consultancy for the
product stack will bring the revenue for WSO2. In addition to that some client projects are
also carried out.

This innovative business model enables WSO2 to compete with industrial giants like IBM,
Oracle and Microsoft who were there for decades and get the preference by customers.

       1.5 Support and Service Model

Categories of support offering can be list down as follows.

            •   Community Support
            •   Evaluation Support
            •   Training
            •   Development Support
            •   On sight trainings
            •   Off sight trainings
            •   Production Support

There are also Quick Start and Cloud Start supporting services which are designed to bring
customers more familiar with WSO2 products.

            1.5.1   Community Support

Through online websites like Stackoverflow, WSO2 allows users to post questions and allow
then to be public. Once a question has the tag WSO2, WSO2 puts full effort to solve those
issues, believing that answering would benefit the whole community interest in WSO2
products.

            1.5.2   Evaluation Support

This service is designed to help customers in selecting technologies, strategies in early stages
in middleware projects. For qualified customers some of the services are offered free of
charge in this module. In this support WSO2 offers support with Middleware architecture
consulting, Developing Requests For Information/Proposal (RFI/RFP), and Proof of Concept
implementations.




                                                                                       Page | 6
1.5.3   Development Support

This support connects customers directly with customers to during critical development
stages. This dramatically reduced the time between development and production. In here
WSO2 help migrate, integrate, optimize, and manage your enterprise middleware
deployments by efficiently getting direct access to master brains in products that customer
consume. Following can be mention as the key benefits that customer gets through this
supporting system,

           •   Communication through a confidential forum with guaranteed response time.
           •   Support for product tuning for security, performance, and other needs.
           •   Provide selected pre-production patches.
           •   WSO2 Carbon Studio Support, including assistance, issue resolution, and
               development.
           •   Delivery of patches and service packs for the currently released version.

Through this process developing engineers inside WSO2 team exposed to well recognize
engineers in the world.

           1.5.4   Production Support

Production support is to secure mission critical applications are available 24x7x365. Bringing
this kind of support customers is satisfied with the quality of service by WSO2. In addition to
that customers who take Production Support will be eligible to have the latest feature
upgrades, product patches and service packs. In this supporting system customers have the
opportunity of determine the severity level of errors, according to guidelines in Annex as A2.

           1.5.5   Quick Start Support

This program as it name says, is helping customers to get start with WSO2 product with in
considerably lesser amount of time. This will bring world class engineers on-site to work
collaboratively with customer’s team. Through this WSO2 will be able to clarify the actual
customer need and provide necessary guidance through middleware platform. Additionally
this will help users to fine tune the WSO2 products that matches for their environment and
requirements. For this process WSO2 provide two on-site engineers and one off-site engineer,
in order to look up for quick tuning and development support.


                                                                                        Page | 7
1.5.6   TurnKey Packages

Beyond list of 12 products on top of Carbon platform, WSO2 offers a set of turnkey solution
packages, with twenty four hour support and enterprise-level maintenance on the entire client
system, installing monitoring and maintenance. Those products are addressing customers’
enterprise integration problems, security and identity problems, governance problems, and
more, to reduce the complexities of deploying business solutions.

Following list contains some examples created by WSO2 in this area.

            •   WSO2 Security & Identity Gateway Solution
            •   WSO2 Mobile Services Gateway Solution
            •   WSO2 FIX Gateway Solution
            •   WSO2 SAP Message Gateway Solution
            •   WSO2 App Factory

All the products above are based on award winning Carbon platform, so that it can be
customized as components according to customers’ wishes and provide optimize solution for
their investment.

        1.6 Organizational Structure

The company consists of very flat and informal structure. Within the company every one
considered as equally no matter how much mature each one is or how old each one. This
system creates team spirit among employees and creates opportunity to talk with anyone
directly.

            1.6.1   Employee Hierarchy

For the purpose of HRM (Human Resource Management) tasks manageable following
hierarchical structure applies. But in decision making, even an intern can take part if
considerable amount of reasons in hand. So that makes the agile process of software
development more efficient and practical because employees will get the opportunity of
applying the perfect solution at right time.




                                                                                     Page | 8
Board




                                     VP                                        SM
                   VP Finance                  VP Marketing    VP Sales
                                 Engineering                               Administration




                    Account
                                  Directors     Managers      Sales Team    Admin Staff
                    Managers




                                                  Team
                                 Architects                                Support Staff
                                                 Members




                                                 Business
                    Tech Lead     QA Team
                                                 Analysts




                    Software
                                    QA
                    Engineer




                                     Figure 1.2 Employee Hierarchy

           1.6.2   Exchanging Ideas

WSO2 believes that using transparent mail lists is the best way to fix any issue very fast. This
transparency allows anyone who has knowledge to reply immediately to the requester and
produce maximum output and lower the confusions. WSO2 mail lists not only for the
technical purposes but also for non-technical purposes as well.

           •   Support _ dev – This is focusing on support for the developers and requesting
               for a support on a particular issue.
           •   Training – To discuss things related to training inside WSO2 and outside
               things those employees can participate.
           •   Marketing – Discuss matter related to marketing strategy etc. Anyone can post
               their ideas here on how to promote WSO2 products
           •   Operations – Any issue regarding daily operations of the company goes here
               Eg. Cleaning, breaking down PCs
           •   Infrastructure – Any matter regarding network, WSO2 servers etc. goes here
           •   Vacation – Any type of leave taken should be informed to this mailing list
           •   News – Any news regarding the industry that seems useful for the company
               are posted here


                                                                                            Page | 9
•   Club – Jokes and other stuff goes here for fun mostly

Through this mailing list anyone in the company will have the opportunity to discuss with
others about the issues, difficulties facing. There is no need to follow the hierarchy to solve
issues. Even interns can directly meet Dr. Srinath Perera or Dr. Sanjiva Weerawarna if they
have to make complicated decisions among development.

       1.7 WSO2 Team

The secret of conquering the middleware platform this much fast is the WSO2 Team, which
consists of the best people for each field. Following is the current team of employees
contributing their full commitment to the company.

Leadership – WSO2 is leaded by very experienced and people across the globe that guides
the company for this much success in just 7 years.

• Mr. Sanjiva Weerawarana, PhD, Founder, Chairman and CEO

• Mr. Paul Fremantle, PhD, Co-Founder and CTO

• Mr. Jonathan Marsh, VP Business Development and Product Design

• Ms. Monica Pal, VP Marketing

• Mr. Samisa Abeysinghe, VP Engineering

• Mr. Devaka Randeniya, VP Sales

• Ms. Padmika Dissanaike, VP Finance

• Ms. Puny Navaratne, Director, Legal

• Ms. Hasmin Abdul Cader, Director, Marketing

• Mr. Asanka Abeysinghe, Director, Solutions Architecture

• Ms. Isabelle Mouny, Director, Product Management

• Mr. Afkham Azeez – Director, Architecture

• Ms. Udeshika Ratnavira, Senior Manager, Administration and HR



                                                                                     Page | 10
Advisors - The world class personalities and scholars who will be guiding the company
through out with their experience and valuable insights on the industry are as follows.

• Mr. Larry Augustin – Investor/Advisor

• Mr. Geir Magnusson Jr. – VP Engineering, Joost

• Mr. Brian Behlendorf – Founder & CTO, Collabnet

• Mr. Tom O‟Reilly – Founder, O‟Reilly Media

• Mr. Patrick Grady – Chairman & CEO, Rearden Commerce

• Mr. Tony Pizi – CIO Platform Engineering, Deutsche Bank

Product Teams -

The engineering team –The engineers who work on the development, research, design and
testing work fit into this category. Again divided according to the technology groups and sub
divided depending on the product they work on as ESB team, Greg team, Identity Server
team, Gadget Server team etc. Following list shows each TG (Technical Group) with the list
of products they have.

Development TG

       Application Server
       Tooling
       Gadget Server

Solution TG

       App Factory
       API Manager

Data TG

       Data Service Server
       Business Activity Monitor
       Complex Event Processing
       Business Rules Server



                                                                                      Page | 11
Integration TG

       Enterprise Service Bus
       Identity Server
       Message Broker
       Governance Registry
       Business Process Server
       Elastic Load Balancer

Foundation TG

       Carbon
       Stratos

The sales team – Deals with the customers and liaise between the customers and the
developers.

The marketing team – Works on marketing WSO2 products by means of sponsorships,
advertisement campaigns, workshops, and webinars so on. Most of the events are organized
with the guidance of marketing team having the whole WSO2 team support.

The finance team – Takes care of the accounts, income, and expenditure of the company

The administration team – Provides vital administration and human resource work handling
salary payments, foreign visit arrangements etc...

       1.8 WSO2 Products and Services

All the WSO2 products and services are based on enterprise middleware called WSO2
Carbon which is available as downloadable form or as a Java PaaS – WSO2 Stratos. Aiming
major business issues already exists WSO2 introduce a set of 12 products which are
configurable according to user requirement. A high level view of categorizing WSO2
products attached with annex, A3. Following are brief description on all 12 products and
services and I explained more on Enterprise Service Bus, the product I worked on.

           •     WSO2 Application Server - web service hosting
           •     WSO2 Enterprise Service Bus - message mediation
           •     WSO2 Message Broker - message queuing and publishing services


                                                                                    Page | 12
•   WSO2 Data Services Server - managing data sources and data access
           •   WSO2 Governance Registry and repository - managing WSDL, schemas,
               policies, life cycles and versioning
           •   WSO2 Gadget Server - for portal services
           •   WSO2 Web Services Frameworks for C, C++ and PHP – provide simple APIs
               for implementing web services and web service clients
           •   WSO2 Identity Server - for authentication, single sign-on and access control
           •   WSO2 Business Process Server – for processing business processors written in
               BPEL (Business Process Execution Language)
           •   WSO2 Business Rules Server – combine SOA with business rules
           •   WSO2 Complex Event Processing Server – Identify events and react to them
           •   WSO2 Business Activity Monitor – monitor the performance and report
               failures in business processes
           •   WSO2 Mashup Server – integrate rich content on internet with enterprise

           1.8.1   Enterprise Service Bus (ESB)

The images in Annex A1,2 and A1,3 shows the architectural diagram and the component
diagram of WSO2 ESB. WSO2 ESB is a completely Java based middleware component that
encapsulates the services from clients and vice versa. To do such a great work by consuming
lesser amount of memory space, this product is supporting most of the current world message
transporting technologies and messaging formats. Key features of WSO2 ESB can be
categorized as follows,

       Connecting Anything to Anything
       ESB supports HTTP, HTTPS, POP, IMAP, SMTP, JMS, AMQP, FIX, TCP, UDP,
       FTPS, SFTP, CIFS, MLLP, SMS transports in exchanging messages. Consider about
       Message Format ESB supports JSON, XML, SOAP 1.1, SOAP 1.2, WS-*, HTML,
       EDI, HL7, OAGIS, Hessian, Text, JPEG, MP4, All binary formats, CORBA/IIOP
       type messages. It also consists of a bunch of adaptors which allows users to connect
       with external (Non-WSO2 tools) SAP BAPI & IDoc, PeopleSoft, MS Navision, IBM
       WebSphere MQ, Oracle AQ, MSMQ. By enabling connections with Salesforce,
       Paypal, LinkedIn, Twitter, and JIRA customer will have full freedom of connecting to
       applications in cloud.


                                                                                    Page | 13
Routing, Mediation and Transform
ESB can be configured messages to be route according to Header based, Content
based, Rule-based and Priority-based algorithms. It is also support message mediation
by exhibiting almost all the EAI (Enterprise Application Integration) patterns.ESB
also supports logging, event publishing and database accessing, API accessing
functionalities along with XSLT, XPath, XQuery, and Smooks transformations.
Message, Service, API and Security Gateway
ESB exposes its interface to exchange messages in different forms and provide
facilities to use software patterns including message decoupling, load balancing, fail-
over endpoints, exposing RESTful APIs, enforcing standards, policy management via
Governance Registry, Secure messaging with WS-Security, LDAP, OpenID, SAML,
XACML and many more.
High Performance, High Availability, Scalability and Stability
WSO2 ESB is designed to support 1000s of concurrent non-blocking HTTP
connections per server and a customer like eBay has the experience of using this ESB
in such critical situations. This product guarantees that execution stability with low
resources utilization during long time runs.
Lightweight, Developer Friendly and Easy to Deploy
More than setting configuration through coding WSO2 ESB gives flexible UI to setup
the configuration user want along with mediations and error handling facilities. This
ESB also can be made available to a company as a private cloud by allowing tenant
users to access or as a public cloud with the help of WSO2 Stratos. Considering
flexibility, WSO2 ESB allows customers to make their own mediators with their
favorite language Java, Javascript, Groovy or Ruby and plug using class mediator. For
any parties who are interested in developing this product can easily check out the
source code and re-build custom version of the products using famous building tools
Maven and Ant.
Manage and monitor
Through web console with web security, customer can access to the statistics page of
WSO2 ESB to see the performance of it. This can also be integrated with Business
Activity Monitors to take decisions in business activities. ESB also consists of
flexible logging support with integration to the enterprise level logging systems. Also
customers of this ESB have the luxury of using JMX MBeans for monitoring and
management.
                                                                             Page | 14
1.9 Performance of WSO2

Immerging in middleware industry within 7 years is the best fact to show the performance of
WSO2 other than anything else. Being a company with master minds in Sri Lanka, company
has lots of lands marks [2] and it is guarantee that the company will have good achievements
in future too. In addition to hear successful stories from customers WSO2 has won following
highly recognized awards in the industry.

           •   Kuppinger Cole European Identity Award 2011 - WSO2 was recognized for
               the innovative features of its open source, multi-tenant WSO2 Identity as a
               Cloud Service
           •   SD Times 100 Award - For the fourth consecutive year, WSO2 was
               recognized as one of the “top leaders and innovators” in the software industry
               by the editors of SD TIMES.
           •   Red Herring Asia 100 Award - WSO2 was awarded the Red Herring Asia 100
               Award in 2006 for being one of the most promising private technology
               companies in Asia.
           •   InfoWorld Best Open Source Software (Bossie) Award - WSO2 was named
               InfoWorld 2009 Best of Open Source Software (Bossie) Award winner and
               recognized for delivering WSO2 Carbon
           •   National Best Quality Software Awards (NBQSA) - WSO2 walked away with:
                   o WSO2 Enterprise Service Bus: Gold Award under Infrastructure &
                      Tools Category and Overall Gold Award.
                   o WSO2 Gadget Server: Silver Award under Research & Development
                      Category.
                   o WSO2 Data Services Server: Bronze Award under Infrastructure &
                      Tools Category.

           1.9.1   Strengths

Carbon platform – Carbon platform is the backbone of every product in WSO2. It provides
a complete middleware platform to make components on top of that. This innovative product
provides user a componentized framework which the user can just use the components they
want and pay for the service they use. This flexibility gave the chance to WSO2 to present the
first PaaS – WSO2 Stratos. Every development in WSO2 has concerned with local and cloud


                                                                                    Page | 15
support due to this approaches, and will suite for future of middleware industry. The
architecture of carbon platform is carefully designed to meet the challenges that could occur
due to business matters.

Flexible working culture –In WSO2, employees have more flexibility working environment.
They have no exact time to start or ending work, but by giving a friendly working
environment employees’ dedication towards the company has increased. They are also having
the luxury of working from home also. Someone may wonder how such culture can improve
the productivity of a company, but that system actually worked well in WSO2 because of
employees’ heart feel to contribute to the company.

Dedicated team with talents – Other than the infrastructure and facilities provided by the
company, this is the main strength of WSO2. The engineering team of WSO2 consists of
incomparable, world-class architects and developers having experience and contributions at
global industry. Since they come from university background they have a smarter way of
thinking compared to coders who have just dealt with programming stuffs. WSO2 having
committers for all the products it gets from ASF to get the benefit of using it. In addition to
that new comers coming from different backgrounds and fields share their experience and use
their experience in every way they can to add more value to the company. Not only just
developments, even engineers share their implementations and knowledge through writing
blogs and tweeting.

Open Source Company – By exposing the source code to the world everyone can have a
look and try on those codes and identifies weaknesses and even if they interested they have
the opportunity of fixing those. So this creates a large committee for helping WSO2 products
outside the WSO2 to help, so customers do not have to take WSO2 products.

           1.9.2 Weaknesses

WSO2 provides a good environment and unforgettable period to the entire team. But there
are few areas to be improved. Currently WSO2 working in three offices in Sri Lanka. Even
though mailing lists and instant messaging services keep all employees close, in some
situation it is not enough. So employees need to travel from one place to another is a kind of
wasting valuable time. Brining all the offices to a same building would be a solution for this.
I’m sure it will increase the productivity when an employee in a certain product has to consult
an employee from another product.

                                                                                     Page | 16
Another drawback is less documentation to get familiar with technologies used in WSO2
products. This has been a big issue for all new team members to get the right idea on a
product. If there was a good set of documents for new comers, it would be much easy to
catch-up. Even though WSO2 maintain a huge set of documentations in WSO2 Oxygen Tank
[5], information at there was not sufficient enough for certain tasks. If somehow WSO2 can
improve this resource I’m sure that new comers to WSO2 and rest of WSO2 fans will get the
benefit of it.

            1.9.3   Opportunities

Being closely working with local universities WSO2 gets the full benefit of having best
brains in the country for development process. In addition to that working closely with ASF
WSO2 has the golden opportunity of having the support for their base product from all over
the world. In Sri Lanka still there is no company that follows the methodology of getting
revenue through support system and would be more attractive way of having customers.
Owning a componentized carbon platform, WSO2 has the opportunity of creating new
solutions for many problems may arise in the world.

            1.9.4   Threats

In middleware industry WSO2 does not have local competitors, but it has to compete with
industrial giants who have been in the industry for decades. Some of them are IBM, Oracle,
Microsoft and Google. Products of WSO2 need to have the potential of being attracted over
products by those companies. In addition to that developments of WSO2 is not aiming local
machines but also for cloud infrastructure too, would be need to take more complex approach
in development stages.

        1.10     Service to Sri Lankan Society

WSO2 was able to create new era for Sri Lankan software industry. In contrast to traditional
software companies that act as branches of foreign software companies, WSO2 is formed as a
Sri Lankan software company lead by Dr. Sanjiva Weerawarna, the former and the CEO of
WSO2. In collaboration with ASF, gives more opportunity to Sri Lankan to contribute to
world class projects and get the return back to WSO2.

WSO2 encourages its employees to do further studies outside Sri Lanka and create
opportunities to serve the nation after they have finished studies. Many computer science

                                                                                   Page | 17
graduates concerned about going abroad just after passing out, but WSO2 was able to get the
benefits of those people to development of the company and in return providing a good
environment to work with and knowledge on cutting edge technologies.

Many WSO2 professionals provide mentoring to final year projects carried out by final year
students and provide internships to students in Sri Lankan universities. From that
undergraduates get exposed to new technologies that have a potential to change the world in
near future.

WSO2 has an annual event WSO2-Con to bring expertise in the world to Sri Lanka and
provide opportunity for Sri Lankan professionals to meet them and provide opportunity to
exchange technical and non-technical experiences, and Sri Lankan culture. This kind of
contribution to the country shows the signs of being middleware industry a key role in Sri
Lankan economy near future.

       1.11    Suggestions to improve

I have already mentioned few areas that WSO2 needs to work on to improve. First one was to
bring all offices in Sri Lanka in to a single place in order to empower the developments
carried out with different products. Other than development it would be easy to provide off-
site support for the customers in different countries. When considering about customer
support it would be more efficient if WSO2 can have a good developing team at Palo Alto
office to access customers quickly compared to current method of visiting Sri Lankan
development team abroad.

Lack of documentation on products is also a problem for new comer to a product. If there
were resources explaining the products and architectural decisions taken behind then,
definitely it would be a great help. In addition to improve the WSO2 Oxygen Tank, keeping
the articles up-to-date is also very important, since some features are left after certain
releases.

Within last 7 years of time WSO2 has done a lot in middleware industry. Because of that
WSO2 holds a major role in Sri Lankan software industry. But the brand WSO2 is not
popular among the general public and they are not aware about the world-class products that
WSO2 has innovated with the help of Sri Lankan brains. If it is possible to make the brand
among Sri Lankan general public, it would be more beneficial for the company.


                                                                                   Page | 18
2. Training Experience

       2.1 Stepping in to WSO2 Team

On 15th of May 2012 is the unforgettable day of all twenty three interns who are selected for
WSO2. In the morning we stepped in to main office located at Flower Road, Colombo 07.
First of all we were given laptops for the use of internship period after confirming our details.
Thereafter Ms. Udeshika Rathnavira gave her welcome speech and did a presentation to
introduce WSO2 culture. She mainly focused on adapting to the flat structure of the
company, how internship period differ from life at university, what are the benefits we get,
how we should behave within the company, does and don’ts. After her speech she pointed us
to System Engineers to resolve if there are any issues with our contact details or email
address. On the same day we were group according different TGs and expect to go and meet
team members.

I was selected to Integration TG which was located at No.58, Dharmapala Mawatha,
Colombo 03 at that time. After selections altogether there are five of us including myself,
Pulasthi Mahawithana, Sameera Kannangara, Hasintha Indrajee and Sajini De Silva who
selected for Integration TG left the main office and went to office at Colombo 03. For first
few days we were shown a place at 6th floor to work.

During first few days we didn’t appointed to work. So we installed required infrastructure to
the laptops given to us. Then we went through products of WSO2 to get the basic knowledge
we need. Meanwhile we share what we found through mails with the interns working in other
offices. In addition to get the knowledge on WSO2 products we started getting to know about
other technologies like SVN, Maven, Ant which we thought to be useful. Getting familiar
with WSO2 products we tried to do as a collaborative work among ourselves.

After working as a single team for about two weeks, we split into different products by Mr.
Prabath Siriwardena who is in-charge of overall Integration technologies. From that day I
have to work with ESB team which works for developing the product WSO2 Enterprise
Service Bus. Mr. Kasun Indrasiri and Mr. Miyuru Wanninayaka were appointed to mentoring
me during internship period. My first task was to check out Carbon Platform from the online
SVN repository and build using Maven. That took couple of days since there were build
failures and I had to consult members in ESB to get the required help. Meanwhile the



                                                                                       Page | 19
building process is going on I was asked to read the technical documents related to WSO2
ESB product to gain more detail knowledge on those.

       2.2 Induction

First day induction program was conducted by Ms. Udeshika Rathnavira, Senior Manager,
Administration and HR with Ms. Hasmin Abdulcader, Director Marketing for twenty three of
us. It was a friendly discussion which resolves our doubts and introduced WSO2 culture to
us. They explained how flat hierarchy is maintained within the company and how each
member is treated equally. They emphasized that we should talk to each other with their first
names, even for the CEO of the company. In addition to that they briefly explained us about
the history of WSO2, the business model used in WSO2, and facts that we should not
exposed to external parties.

During teatime in WSO2 every member supposed to come to dining area in each office and
have snacks and tea. They also mentioned that is very important to share each ones
experience with others during tea time. Other than tea time anyone can come to dining area to
have refreshment while working. In the company there was no dress code we should wear,
and we are free to wear casually. From those instructions given in induction program we
realized that this place will not going to be that much hard to work with.

Ms. Udeshika further explained that office hours are flexible and there will be no deadlines
for our work load, but if we do more we can get more knowledge. Permanent employees
working in WSO2 has the option of working from home, but interns will not get that chance
since it violates the objectives of internship and it is impossible to do that since surely we will
need the help of team we are working with.

       2.3 Development Environment

Ubuntu – Since an open source company most of the WSO2 employees were using Ubuntu,
an open source Linux based OS and I too started to use Ubuntu. Installation of software
including java installation were done using command line, Synaptic Package Manager,
Gnome interface and got familiar with setting up environment variables on .bashrc file that
was so different from Windows. But finally I was able to customize as I wish with the help of
team members.




                                                                                         Page | 20
IntelliJ IDEA IDE – I was familiar with using NetBeans and Eclipse at university, but as lot
of developers at WSO2 was using IntelliJ IDEA as their IDE tried to use that. The key-board
centric IDE seemed fine and continued to master that IDE and worked using that.

SVN - The primary mechanism of version controlling used at WSO2 is SVN. At the
beginning only thing I did was checking out codes from WSO2 repo and later, we were given
separate spaces at there to commit the codes and make them under version control.

FireBug – This is a recommended tool for all the developers at WSO2 to use on any of the
code they write. The tool is so smart that it run through our code and analyzing the patterns,
highlights where bugs are possible. To achieve high quality in coding with minimum bugs
this is a great tool to use.

TestNG – This is the framework used by WSO2 to write automated test. There were several
rules and annotations we should obey while writing a correct test. After writing a test on that
framework TestNG execute those tests as instructed while building with Maven.

Maven – It’s a very widely used open source software project management tool by Apache.
Almost all the projects at WSO2 are managed using Maven with the pom.xml that describes
the software project being built, its dependencies on other external modules and components,
and the build order. That makes the project build process easy. In fixing dependencies Maven
take the load of the developer to download them and fix with the project. Instead it
dynamically downloads Java libraries and Maven plug-ins from one or more repositories,
reading the pom.xml at build time. Maven provides built-in support for retrieving files from
the Maven2 Central Repository and other Maven repositories.

TcpMon – This is a very much useful debug tool that allows viewing messages and
resending them. It can be set to a listening port in TcpMon and it shows messages that come
to the port and continue the message without any change. It was great tool which helped me
to analyze messages in developments and test automations.

SOAPUI – This is a widely used tool at WSO2 for all sorts of tests. It is a free and open
source cross-platform functional testing solution. I have become familiar with this tool in
testing Resequencing Message Processor, because SOAP UI was the best choice to produce
custom messages for a particular web service.




                                                                                     Page | 21
Surefire Reports – These are kind of reports generated after building WSO2 repository
using Maven. These reports show the test failures and the error which causes the failure.
These reports helped a lot in test automation season to check the test are running perfectly.

       2.4 Axis2 Web Services

WSO2 is totally focused on using web services efficiently to solve business problems.
Therefore it was very important to learn the key basics used with this technology. For that
purpose I was given time to go through articles published by ASF and have a good
understanding of how Axis2engine works. Within that period of time I realized how
messages pass through this engine, what are the handlers use, how handlers work together to
do message processing, modules use in engine and how they interact with each other. A
fundamental architecture of Apache Axis2 engine is shown in Annex, A4. This engine
actually covers the most fundamentals of all WSO2 products that we should know. In
addition to that I have to download and setup Axis2Server and tryout some web services too,
which improved my skills in developing web services and gave me an exposure to WSDL.
During creation of web services I have gone through four methods,

           •   Deploying using Plain Old Java Objects (POJO)
           •   Building the service using AXIOM's OMElement
           •   Generating the service using Axis2 Databinding Framework (ADB)
           •   Generating the service using XMLBeans

I have also created clients for each service for testing. Through those works I was able to lay
foundation on Messaging Exchanging Patterns (MEP) which is used in later works. Two
major MEPs are as follows,

           •   In-Out: The client sends a SOAP message to the server, which processes the
               message and sends a response back.
           •   In-Only: The client sends a message to the server without expecting a
               response.

The rest of other complicated MEPs are design on top of these two. So through understanding
on these stuffs is very important since ESB works completely on the concept of messaging to
interact clients and services.



                                                                                       Page | 22
2.5 Trying out WSO2 ESB

In theoretically I have heard about ESBs through lectures but I haven’t got a chance of using
ESB. As an intern first I was given opportunity to try out samples [6] provided with ESB and
learn about the capabilities that WSO2 ESB exhibit as a middleware. Following are some of
those,

            •   Using clients in different modes
            •   Access to various types of EPRs (End Point References)
            •   Use Mediation techniques
            •   Handling Fault Messages
            •   Load balancing over endpoints
            •   Conversions in transport medium
            •   Conversions in message formats

After understanding those basic things I have to go through set of documents related to
Message Store and Forwarding Pattern in WSO2 ESB. In those scenarios different types of
Message Stores and Message Processors are used. Referring in to more details I become
aware of the parameters they need to configure those to suite our needs and limitations of
each implementation.

         2.6 Resequencing Message Processor

After having a basic understanding about background knowledge, Tech Lead of the team
gave me a project to implement a Message Resequencing Processor. It is to be a new message
processor which can send messages to a given sequence in an ordered manner. For that
project I had to work closely with Message Broker team member Mr. Charith
Wickramarachchi, who has implemented the message stores and processors in WSO2 ESB.
He first explained me on how message stores and processors work and let me to read some
important stuff related to those. Thereafter I closely worked with him in taking design
decisions related to the implementation. To have initial implementation he introduced me to
Synapse platform, Synapse dev. list and helped me to checkout from Synapse trunk. There
after he let me to identify the correct place to do the implementation and guided me in doing
implementation.




                                                                                   Page | 23
2.6.1   Introduction

Apache Synapse is a lightweight, high performing Enterprise Service Bus (ESB) that
provides an exceptional support for XML, Web services and REST with the help of fast and
asynchronous mediation engine. With this improvement Apache Synapse will get the
capability of re-sequencing the messages which goes through it according to a given
sequence number. In this article I'm going to explain on how to configure the reseqencer and
how it behaves.

           2.6.2   Resequencer




                           Figure 2.1 Resequencing EAI Pattern

Within Synapse the messages may take different routes due to routers, filters etc. Due to the
characteristics of each route the time to process the message will vary. Thus the end results
will not the same as the beginning. Some messages may arrive earlier than others. So this can
be disadvantageous in a situation that order of delivering message matters. In order to
overcome this issue, resequencing EAI pattern is introduced with a stateful processor called
Resequencing Processor.

           2.6.3   Architecture

Implementing Resequencer can be done using by adding a message store and a resequencing
message processor. The following diagram shows high-level view of it.




                             Figure 2.2 Resequencing Processor Design




                                                                                   Page | 24
This resequencing processor will take the help of message store and message processor
capability of the Synapse which are already presence. A message store is used to keep the
messages that should be sent by the Resequencer in an ordered manner. The Resequencing
Processor should be pointed to that store in order to retrieve and look the messages available
in the store. All the messages that should be sent in a sequence must have a sequence number
in a certain location of a message which can be accessible.

           2.6.4   Resequencing Processor

This Resequencing is completely responsible for re-ordering messages in a given message
store. It can recognize the initial sequence number from the messages already in the store and
inject messages to a given sequence in a given rate [10].

Implementation of the Resequencing Processor is done using the Scheduled Message
Processor which is an abstract and gives the capability to implement a processor with
scheduled tasks. So inherently the Resequencing Processor uses the Quartz Scheduler as an
infrastructure. Other than the facilities inherited from Scheduling Message Processor,
Resequencing Processor possess capabilities of deciding initial sequence number according
to given configuration, store the state of the processor and so on.

The benefits of the design will serve the Synapse as follows.

           •   A separate storage is not needed. The resequencing processor can be attached
               to an in-memory store which is already added to Synapse. In addition to that
               Resequencer can work with persistence message stores too (which are not
               currently available in Synapse but can be added).
           •   The message which is chosen by the Resequencer will be sent to a sequence.
               Therefore user will have more opportunity to process the message further.
           •   The Resequencing Processor comes with a special algorithm to identify the
               starting sequence number. Therefore it can be plugged in to a message store
               which already have messages and continue re-sequencing.

After selecting an initial sequence number Resequencing Processor checks the given to
extract the message which contains required sequence number. Once the message containing
required sequence number is found, message is directed to the given sequence for further
mediation and required sequence number get increased by one. For searching required


                                                                                    Page | 25
message Resequencing Processor currently uses linear search through the messages in the
message store. When a message is selected as the required message it should be removed
from the message store, therefore it is important to use a message store which supports
random removal of messages.

If the user wants to connect to external message store, you just need to configure Store
mediator according to that. Resequencing Processor does not required to change. It is very
important to select the right type of message store for the purpose, since the Resequencing
Processor will not remove messages from the store until it finds the message with required
sequence number.

           2.6.5   Selecting initial sequence number

Resequencing Processor is designed to decide the starting sequence number automatically.
Following logic is used to decide the initial sequence number.

           •   When starting Synapse Resequencing Processor checks the attached message
               store for any messages. If any messages found, select the minimum sequence
               number as the initial sequence number. Else continue without selecting initial
               sequence number.
           •   If initial sequence number is selected at the start up, continue sending
               messages to the given sequence. Otherwise waits for required number of
               messages to come within a certain timeout.
           •   If the required numbers of messages are received, select initial sequence
               number from those and do further resequencing. If required number of
               messages are not received with in timeout, select the initial sequence number
               from available messages in the store.




                                                                                   Page | 26
Logical flow of electing initial sequence number is also can be shown using a flow chart as
follows.




                      Figure 2.3 Selecting Starting Sequence Number

In the diagram N notates the number of messages that the Resequencing Processor expects
after starting without having initial sequence number. P notates the number of attempts that
processor should made to check whether that required number of required messages are
available in the store. The value of the Delay remains constant since user can configure P
value as they want.

           2.6.6    Resequencing Processor Configuration

Configuration of the Resequencing Message Processor can be shown as follows.

<messageProcessor
      class="org.apache.synapse.message.processors.resequence.ResequencingProcessor"
name="ResequencingProcessor"
messageStore="MyQueue">


<parameter name="interval">10000</parameter>



                                                                                       Page | 27
<parameter           name="seqNumXpath"          xmlns:bank="http://bank.resequence.synapse.org"
expression="//bank:display/bank:seqNo"/>
<parameter name="nextEsbSequence">next_seq</parameter>
<parameter name="requiredInitMessages">15</parameter>
<parameter name="requiredInitMessagesDelay">2</parameter>
<parameter name="deleteDuplicateMessages">true</parameter>


</messageProcessor>



In the attribute section of the message processor user should point to the class which the
Resequencing Processor is implemented, name of the processor, the message store to use.

Parameter interval is to set the invoke interval in milliseconds (default value is 1000ms).
"nextEsbSequence" is to point the next sequence that the selected message should be
forwarded next and it is essentially needed. "seqNumXpath" parameter is also an essential
parameter and tells the processor about the path to extract sequence number from a message.
Expression attribute of "seqNumXpath" parameter says the place to extract. It is important to
say that the Message Processor Serializer and Message Processor Factory should be modified
in order to use "seqNumXpath", hence Resequencing Processor too.

"requiredInitMessages" and "requiredInitMessagesDelay" are for the N and P values in flow
chart diagram respectively. They have default values 4 and 5 but can be configured as given.

In addition to the given parameters, all the parameters inherited from Scheduled Message
Processor can be used here.

             2.6.7   Additional Modifications Made

Resequencing Processor needs to use Xpath expressions to extract the sequence number from
message context. For that purpose it is required to use a different type of parameter. Currently
Synapse supports name-value type parameters only.




                                                                                      Page | 28
So I changed the Message Processor Factory and Message Processor Serializer in order to
take name-expression parameters and create SynapseXpath objects during runtime.

Because of that following type of configuration is also allowed in Message Processors.


  <messageProcessor


  class="org.apache.synapse.message.processors.resequence.ResequencingProcessor"

  name="Alfa Processor"

  messageStore="Message Store Name">




  <parameter name="param1">value1</parameter>

  <parameter name="param2">value2</parameter>

  <parameter name="param3" xmlns:ns="http://url.org" expression="xpath expression"/>




  </messageProcessor>




This modification will not affect any other configurations and can be used only by parameters
inside Message Processor.

       2.7 Test Automation

During the middle of the internship period we had come across a very busy schedule because
of product releases. Mainly we were divided in to two groups to help in automating tests in
WSO2 ESB and WSO2 Greg. I was selected into WSO2 ESB test automation team. During
initial days we had training sessions on the test automation framework Clarity, TestNG, and
SOAP UI which was very useful in writing tests. For the coordination of ESB test automating
team Mr. Dharshana Warusawithana and Mr. Nuwan Wimalasekara was appointed.




                                                                                    Page | 29
As a team we day-by-day automated the given test scenarios as we can. During first phase we
are sub-grouped to each category of mediators in ESB and in the second phase we had to
automate test scenarios related to customers’ issues.

Following are details of some patches I have created during test automation period.

In-mediator tests [7] - I have to deal with different test scenarios created for In-mediator of
ESB and create relevant test to exhibit that they are functioning well

Conditional Router Mediator tests [8] – Through this test automation I have to go through
different aspects of conditional router mediator test scenarios. Some of those were,

           •   Verifying whether child nodes execute correctly
           •   Match elements with different conditions
           •   Combining multiple matches
           •   Use Regex for element matching etc.

Validate mediator test [9] – In the set of validate mediator test, I have implemented a test
related to validation of a schema according to dynamic changes. Through that test I have
learnt about the validating a message body according to a schema specified. So it was a new
and challenging experience for me as I have not dealt with such validation scenarios before.

In addition to those test we were appointed to work on fixes created for customers and later
added to the SVN trunk. In that period we exposed to various aspects of WSO2 ESB.
Following are some of them in detail,

Message Processor Persistence Test case – This test was to check the availability of
Message Processor in the ESB configuration even after restarting the ESB.For this case I had
to manually access the configuration files in ESB to check and verify it.

Validity of responses after enabling nhttp transport Test case – This test was to check the
basic functionality of nhttp transport use in WSO2 ESB. Through this I have learnt on
configuring nhttp transport and validating the responses coming through it.

Handling messages without Content-Type Test case – this was the most challenging of all,
since Content-Type of a message is imposed by regulations. But a customer was getting
messages without content type from an external party. So in that scenario WSO2 ESB fails to
identify the messages and fail in the process. The most difficult part was to produce messages

                                                                                       Page | 30
without Content-Type since most of implementations add the Content-Type by default. So I
had to look and learn about Apache Commons Http Client libraries to produce such
messages.

All the group who were selected to ESB test automation worked on these kind of test for
about two months, and our effort make it easy for the ESB team to come up with good set of
tests.

         2.8 JDBC Message Store

            2.8.1   Introduction

Currently WSO2 ESB uses JMS queues as the persistent message stores which caused lots of
problems and drawbacks in performance. In order to diminish those drawbacks and provide a
more friendly way for data storing Mr. Miyuru Wanninayaka asked me to create JDBC store
support for WSO2 ESB. As the initial steps I looked into the code level implementation of
already existing JMS message store and come up with a solution.

            2.8.2   Implementation

After having research on JMS stores I came up with the following structure to implement
serializable messages from SOAP messages mediate inside WSO2 ESB.




                            Figure 2.4 Construction of Persisting Message

Thereafter one by one I began to do the implementation on JDBC store and finally I was able
to successfully test it with Sampling, Forwarding and Resequencing message processors. I
have already committed my work to public Apache Synapse JIRA [11], so that in some day it
will get added to the Apache Synapse. Following are details about classes in JDBC store.



                                                                                   Page | 31
JDBCMessageStore– Provides the fundamental interface to external parties by
encapsulating the underlying implementations. This class exposes offer, poll, get, clear, poll
and other generic methods of messages stores to outside parties.

JDBCMessageStoreConstants – This class defines the related constant values for JDBC
message store. This class make it easy for maintain JDBC store implementation by gathering
all the constants in to a single place.

JDBCUtil – This class was defined to provide necessary utility functionalities to JDBC
operations. Basically it deals with creating connections and terminating connections,
querying database tables etc.

JDBCPersistenceHelper – This class is to help with converting SOAP messages in to
serializable Java objects and the reverse process after querying the required. This works as an
adaptor between database and ESB.

Those classes along with the classes mentioned previously, created a successful JDBC
Message Store.

            2.8.3   Advantages over other message stores

From the very beginning of the designing phase JDBC Message Store focused on eliminating
the difficulties that faced when using JMS queues as message stores. So following list of aims
are achieved from JDBC store,

        Easy to connect – It’s rather easy to connect with databases compared to JMS queues
        More operations on data – In JMS queues methods like random selecting messages
        are not supposed to support. But with JDBC it become a reality, and has operations
        very close to in-memory stores.
        Fast transactions – In test I have seen that JDBC stores are capable of handling
        about 2300 transactions per second which is 10 times faster than the existing system.
        Work with high capacity and long-time – Since JDBC Stores uses databases as the
        medium to store data, and can depend on up to Terabytes of data. It is also generally
        accepted that Databases capable of handling data for long-time compared to JMS
        queues.

After having tests in different backgrounds with different configurations, I have seen that the
outcomes of JDBC message store has achieved more than expected at the initial stages.

                                                                                     Page | 32
2.8.4   Configuration of JDBC Message Store

To use JDBC Message store customer has to add the required JDBC support. There after
following configuration will allow any message processor to use JDBC message store as
same as other message store.

 <store messageStore="MyStore"/>

 <messageStore

 class="org.apache.synapse.message.store.jdbc.JDBCMessageStore"

 name="MyStore">




 <parameter name="store.jdbc.driver">com.mysql.jdbc.Driver</parameter>

 <parameter        name="store.jdbc.connection.url">     jdbc:mysql://localhost:3306/mystore
 </parameter>

 <parameter name="store.jdbc.username">root</parameter>

 <parameter name="store.jdbc.password"></parameter>

 <parameter name="store.jdbc.table">store_table</parameter>

 </messageStore>



In the above configuration first customer need to specify the JDBC Driver class he is
supposed to use and other parameters like url, username and password which are specific to
the database. In addition to the above method this implementation can also be used with
already existing data sources.




                                                                                 Page | 33
2.8.5   Final architecture

After implementing the project, the final top level view with in ESB environment can be seen
as follows,




                              Figure 2.5 Architectural Diagram of JDBC Store

According to the Fig. 2.5, JDBC Message store work as an intermediate party in between
Store mediator in ESB and database. Additionally it provides interface to Message Processor,
and then passes messages to another sequence to process the selected messages.




       2.9 Implementing EAI Patterns using WSO2 ESB

In the latter part of the internship I have to join with the collaborative work on constructing a
wiki for WSO2 ESB. The sole purpose of the wiki was to show how WSO2 ESB can exhibit
EAI patterns. EAI patterns are standard patterns that messaging systems like ESB should
exhibit. If a messaging system can implement those patterns, it would be much easier for
architects outside WSO2 to get a clear understanding on how to use ESB in their purposes.
Actually those patterns provide a generic idea on ESB which can be understand by people
who has the basic knowledge on messaging systems.

Initially, there was a meeting among team members and distributed the workload of EAI
patterns among team members. There after we have to understand each and every EAI pattern
and find out a suitable plan to implement that pattern using WSO2 ESB. Then I had to
configure ESB in a suitable manner and test the scenario for expected output. Thereafter I had
to document those things in the wiki.




                                                                                       Page | 34
2.9.1   Patterns

In the next topics of this document EAI patterns I implemented are briefly described.
Through implementing EAI patterns I was able to go through different areas in WSO2 ESB,
where I was not able to touch during my individual project or test automation. Some of those
were Scheduled Tasks, Message Formatters, Message Builders, JMS Transports, VFS
Transports etc.

                   2.9.1.1 Implementing Test Message EAI Pattern

The aim of implementing this pattern was to enable WSO2 ESB to automatically check out
readiness of the back-end service periodically and inform the relevant parties. For this case I
had to find mechanism to generate messages automatically and inject them in to normal
message flow without interrupting the general flow.

For this purpose I have to learn Scheduled Tasks in WSO2 ESB, which was new to me. From
that user can either add a time period to inject messages or set a corn expression a particular
date and time the message should be sent. Thereafter user can set the required payload in to
it, so that the scheduled message is sent at the given time to main sequence. Then the reply
message is checked at Validation component to identify the availability of the back-end
service. So the design of this implementation can be shown as follows.




                              Figure 2.6 Test Message Component Diagram

For this case user has to add the following configuration to ESB and send messages using an
Axis2 client to already running Axis2 Server.

<definitions xmlns="http://ws.apache.org/ns/synapse">
  <!-- Proxy for normal message flow -->
  <proxy name="ServiceProxy" transports="https http" startOnLoad="true" trace="disable">
    <target inSequence="sendSeq"/>


                                                                                      Page | 35
</proxy>


  <!-- Normal flow of the messages -->
  <sequence name="sendSeq">
    <send receive="receiveSeq">
       <endpoint>
         <address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
       </endpoint>
    </send>
  </sequence>


  <!-- Fault sequence handles failures -->
 <sequence name="fault">
   <log level="full">
     <property name="MESSAGE" value="Executing default 'fault' sequence"/>
     <property xmlns:ns="http://org.apache.synapse/xsd"
             name="ERROR_CODE"
             expression="get-property('ERROR_CODE')"/>
     <property xmlns:ns="http://org.apache.synapse/xsd"
             name="ERROR_MESSAGE"
             expression="get-property('ERROR_MESSAGE')"/>
   </log>


    <!-- Filter the failed Test Messages -->
    <filter xmlns:ns="http://org.apache.synapse/xsd"
        xmlns:m0="http://services.samples"
        source="//m0:getQuote/m0:request/m0:symbol"
        regex="TEST">
       <then>
         <log>
             <property name="FAILURE" value="*** Test Message Failed ***"/>
             <property             name="FAILED               SERVICE"             value="***
localhost:9000/services/SimpleStockQuoteService ***"/>
         </log>
       </then>
       <else/>


                                                                                    Page | 36
</filter>
    <drop/>
  </sequence>


  <!-- Receiving messages from service -->
  <sequence name="receiveSeq">
    <log/>
    <!-- Filter the Test Messages -->
    <filter xmlns:ax21="http://services.samples/xsd"
           xmlns:ns="http://org.apache.synapse/xsd"
           source="//ax21:symbol"
           regex="TEST">
    <then>
       <log>
           <property name="TEST PASSED" value="*** Test Message Passed ***"/>
           <property             name="TESTED              SERVICE"             value="***
localhost:9000/services/SimpleStockQuoteService ***"/>
       </log>
       <drop/>
     </then>
     <else>
       <send/>
     </else>
    </filter>
  </sequence>


<!-- main sequence used as the test Message injector -->
  <sequence name="main">
   <in>
     <sequence key="sendSeq"/>
   </in>
   <out>
     <send/>
   </out>
 </sequence>




                                                                                 Page | 37
<!-- Task Scheduler act as Test data generator -->
  <task name="Testing"
    class="org.apache.synapse.startup.tasks.MessageInjector"
    group="synapse.simple.quartz">


 <!-- Interval between generating test messages, Cron Expression are also allowed to use -->
    <trigger interval="25"/>


    <property xmlns:task="http://www.wso2.org/products/wso2commons/tasks" name="message">
       <m0:getQuote xmlns:m0="http://services.samples">
       <m0:request>
         <m0:symbol>TEST</m0:symbol>
       </m0:request>
       </m0:getQuote>
    </property>
    <property xmlns:task="http://www.wso2.org/products/wso2commons/tasks"
         name="soapAction"
         value="urn:getQuote"/>
    <property xmlns:task="http://www.wso2.org/products/wso2commons/tasks"
         name="to"
         value="http://localhost:9000/services/SimpleStockQuoteService"/>
  </task>
</definitions>



                   2.9.1.2 Implementing Idempotent Receiver EAI Pattern

The objective of this pattern was to implement a scenario that identifies the duplicates of
same messages. This could occur because some client’s application tends to resend the same
message if they didn’t get the reply with in timeouts. So that could make the backend services
activation several times, since back-end service just do what is asking by message. In order to
handle such situations an ESB should exhibit Idempotent Receiver pattern, so duplicate
messages are rejected or stored in a message store until them get removed.

In order to implement such scenario, I figured out no way with the help of current released
WSO2 ESB, but also figured out that this EAI pattern can be implemented using the



                                                                                           Page | 38
Resequencing Message Processor which I have implemented and ready to attach with future
releases.

The design of ESB configuration can be shown as below.




                                  Figure 2.7 Idempotent Receiver Pattern Design

According to the Fig. 2.7, first I put all messages in to a store and retrieve by sequence
number using Resequencing Processor. So Resequencing Processor makes sure that no
duplicate messages will be sending for further message mediation. By that way WSO2 ESB
also has the capability of exhibiting the Idempotent Receiver pattern.

To do that user should add the following configuration to WSO2 ESB.

<definitions xmlns="http://ws.apache.org/ns/synapse">
  <proxy name="IdempotencyReceivingProxy">
    <target>
       <inSequence>
            <log level="full"/>
            <!-- Store all messages in an in-memory message store -->
            <store messageStore="MyStore"/>
       </inSequence>
       <outSequence>
            <send/>
       </outSequence>
    </target>
  </proxy>
   <!-- Further mediation of messages are done in this sequence -->
  <sequence name="next_seq">
    <send>
       <endpoint>

                                                                                  Page | 39
<address uri="http://localhost:9000/services/SimpleStockQuoteService"/>
       </endpoint>
    </send>
</sequence>
<messageStore name="MyStore"/>
   <!-- Resequencing Processor takes the next sequence number and hand over to "next_seq" and
preserve Idempotency -->
<messageProcessor
class="org.apache.synapse.message.processors.resequence.ResequencingProcessor"
name="ResequencingProcessor" messageStore="MyStore">


    <parameter name="interval">2000</parameter>
    <!-- Takes the sequence number using Xpath -->
    <parameter name="seqNumXpath" xmlns:m0="http://services.samples" expression="substring-
after(//m0:placeOrder/m0:order/m0:symbol,'-')"/>
    <parameter name="nextEsbSequence">next_seq</parameter>
  </messageProcessor>


</definitions>



                  2.9.1.3 Implementing Normalizer EAI Pattern

Normalizer EAI pattern is about translating message formats. As an enterprise middleware
application ESB receives different types of message formats which are generated by client
applications. So as a good middleware product, an ESB should support most of those which
are commonly in use. Other than configuring language, this EAI pattern influences the
underlying transport configurations of WSO2 ESB. In transport level there are number of
transport builders and formatters which enables the support of different message translation
in bi-directional manner.

In the designing such scenario, underlying implementation helps ESB to identify the message
format and translate in to a common format use in WSO2 ESB. Currently SOAP 1.2 Message
format is use as the intermediate message format. When message pass to endpoint it is also
important to mention the message format that the service required. Rest of the mediation of
message is carried out in the same manner as previous.


                                                                                   Page | 40
To show that behavior in WSO2 ESB I have designed the ESB components in the following
manner.




                              Figure 2.8 Normalizer Pattern Design Diagram

For the design shown in Fig. 2.8, user needs to configure proxy and respective
transformations as shown bellow. Some of the transformations are handled by underlying
implementation and some need to specify the transformation.

<definitions xmlns="http://ws.apache.org/ns/synapse">


  <!-- The proxy service to receive all kinds of messages -->
 <proxy name="ServiceProxy" transports="https http" startOnLoad="true" trace="disable">
   <description/>
   <target>
     <inSequence>
       <log level="full"/>
       <!-- Filters incoming JSON messages -->
       <filter xmlns:m0="http://services.samples" xpath="//m0:getQuote/m0:request/m0:symbol">
          <then>
           <sequence key="sendSeq"/>
          </then>
          <else>
           <sequence key="jsonInTransformSeq"/>
          </else>
       </filter>
     </inSequence>
     <outSequence>
       <!-- Filters outgoing JSON messages -->
       <filter source="get-property('TRANSFORMATION')" regex="JSONtoSOAP">


                                                                                     Page | 41
Internship Report
Internship Report
Internship Report
Internship Report
Internship Report
Internship Report
Internship Report
Internship Report
Internship Report
Internship Report
Internship Report
Internship Report

More Related Content

What's hot

Final Internship presentation
Final Internship presentationFinal Internship presentation
Final Internship presentationAnjan Bhattrai
 
Final Internship Report
Final Internship ReportFinal Internship Report
Final Internship ReportMinhas Kamal
 
Internship Report on the Company Overview of
Internship Report on the Company Overview ofInternship Report on the Company Overview of
Internship Report on the Company Overview ofVishal Singh
 
Internship Report
Internship ReportInternship Report
Internship Reportzahurul88
 
Summer internship - Report
Summer internship - ReportSummer internship - Report
Summer internship - ReportSublaxmi Gupta
 
Internship final presentation
Internship final presentationInternship final presentation
Internship final presentationMeme Whisper
 
Acknowledge, list-of-figures-and-tables-sample-writing-report-and-other-docum...
Acknowledge, list-of-figures-and-tables-sample-writing-report-and-other-docum...Acknowledge, list-of-figures-and-tables-sample-writing-report-and-other-docum...
Acknowledge, list-of-figures-and-tables-sample-writing-report-and-other-docum...Shashee Geeganage
 
Internship Project Power Point Presentation
Internship Project Power Point PresentationInternship Project Power Point Presentation
Internship Project Power Point PresentationDavid Mugerwa
 
Computer Science Internship Report PDF Leena AI
Computer Science Internship Report PDF Leena AIComputer Science Internship Report PDF Leena AI
Computer Science Internship Report PDF Leena AIshadowhazard77
 
Title Pages for Internship Report
Title Pages for Internship ReportTitle Pages for Internship Report
Title Pages for Internship ReportShahi Raz Akhtar
 
Summer internship project report
Summer internship project reportSummer internship project report
Summer internship project reportManish Singh
 
Report on industrial visit/Field visit to “Don Bosco Technical School”
Report on industrial visit/Field visit to “Don Bosco Technical School”Report on industrial visit/Field visit to “Don Bosco Technical School”
Report on industrial visit/Field visit to “Don Bosco Technical School”Dipjyoti Deka
 
Internship Final Report
Internship Final ReportInternship Final Report
Internship Final ReportAnisa Yahdi
 
Final Project Synopsis MBA
Final Project Synopsis MBAFinal Project Synopsis MBA
Final Project Synopsis MBAchandan shukla
 
INTERNSHIP REPORT NATASHA NAZIRA
INTERNSHIP REPORT NATASHA NAZIRAINTERNSHIP REPORT NATASHA NAZIRA
INTERNSHIP REPORT NATASHA NAZIRANatasha Nazira
 
Computer Science Internship Report Leena AI
Computer Science Internship Report Leena AIComputer Science Internship Report Leena AI
Computer Science Internship Report Leena AIshadowhazard77
 

What's hot (20)

Internship Report
Internship ReportInternship Report
Internship Report
 
Final Internship presentation
Final Internship presentationFinal Internship presentation
Final Internship presentation
 
Final Internship Report
Final Internship ReportFinal Internship Report
Final Internship Report
 
Internship report
Internship reportInternship report
Internship report
 
Software Engineering Internship
Software Engineering InternshipSoftware Engineering Internship
Software Engineering Internship
 
Internship Report on the Company Overview of
Internship Report on the Company Overview ofInternship Report on the Company Overview of
Internship Report on the Company Overview of
 
Internship Report
Internship ReportInternship Report
Internship Report
 
Summer internship - Report
Summer internship - ReportSummer internship - Report
Summer internship - Report
 
Internship final presentation
Internship final presentationInternship final presentation
Internship final presentation
 
Acknowledge, list-of-figures-and-tables-sample-writing-report-and-other-docum...
Acknowledge, list-of-figures-and-tables-sample-writing-report-and-other-docum...Acknowledge, list-of-figures-and-tables-sample-writing-report-and-other-docum...
Acknowledge, list-of-figures-and-tables-sample-writing-report-and-other-docum...
 
Internship Project Power Point Presentation
Internship Project Power Point PresentationInternship Project Power Point Presentation
Internship Project Power Point Presentation
 
Computer Science Internship Report PDF Leena AI
Computer Science Internship Report PDF Leena AIComputer Science Internship Report PDF Leena AI
Computer Science Internship Report PDF Leena AI
 
Title Pages for Internship Report
Title Pages for Internship ReportTitle Pages for Internship Report
Title Pages for Internship Report
 
Summer internship project report
Summer internship project reportSummer internship project report
Summer internship project report
 
Report on industrial visit/Field visit to “Don Bosco Technical School”
Report on industrial visit/Field visit to “Don Bosco Technical School”Report on industrial visit/Field visit to “Don Bosco Technical School”
Report on industrial visit/Field visit to “Don Bosco Technical School”
 
Internship Final Report
Internship Final ReportInternship Final Report
Internship Final Report
 
Final Project Synopsis MBA
Final Project Synopsis MBAFinal Project Synopsis MBA
Final Project Synopsis MBA
 
INTERNSHIP REPORT NATASHA NAZIRA
INTERNSHIP REPORT NATASHA NAZIRAINTERNSHIP REPORT NATASHA NAZIRA
INTERNSHIP REPORT NATASHA NAZIRA
 
Industrial Training Report-1
Industrial Training Report-1Industrial Training Report-1
Industrial Training Report-1
 
Computer Science Internship Report Leena AI
Computer Science Internship Report Leena AIComputer Science Internship Report Leena AI
Computer Science Internship Report Leena AI
 

Viewers also liked

Architecture Internship Report by Lim Joe Onn
Architecture Internship Report by Lim Joe OnnArchitecture Internship Report by Lim Joe Onn
Architecture Internship Report by Lim Joe OnnJoe Onn Lim
 
District court visit report
District court visit reportDistrict court visit report
District court visit reportShanky Verma
 
MBA Internship Report
MBA Internship ReportMBA Internship Report
MBA Internship ReportAjesh U Bhanu
 
Summer internship presentation development process of startups from start to...
Summer internship presentation  development process of startups from start to...Summer internship presentation  development process of startups from start to...
Summer internship presentation development process of startups from start to...Dinesh Kumar
 
Startup Experienceships - An Internship Revolution
Startup Experienceships - An Internship RevolutionStartup Experienceships - An Internship Revolution
Startup Experienceships - An Internship RevolutionCorkscrew Startup School
 
Sixth sense tecnology.
Sixth sense tecnology.Sixth sense tecnology.
Sixth sense tecnology.Appam Sushma
 
Internship final presentation GraphicPeople
Internship final presentation GraphicPeopleInternship final presentation GraphicPeople
Internship final presentation GraphicPeopleSamsuddoha Sams
 
SIXTH SENSE TECHNOLOGY REPORT
SIXTH SENSE TECHNOLOGY REPORTSIXTH SENSE TECHNOLOGY REPORT
SIXTH SENSE TECHNOLOGY REPORTJISMI JACOB
 
Web Development on Web Project Report
Web Development on Web Project ReportWeb Development on Web Project Report
Web Development on Web Project ReportMilind Gokhale
 
Ecommerce website proposal
Ecommerce website proposalEcommerce website proposal
Ecommerce website proposalSudhir Raj
 
E commerce project report
E commerce project report E commerce project report
E commerce project report Aditya Purohit
 
Online shopping report-6 month project
Online shopping report-6 month projectOnline shopping report-6 month project
Online shopping report-6 month projectGinne yoffe
 
Summer internship report L&T
Summer internship report L&TSummer internship report L&T
Summer internship report L&TUmed Paliwal
 

Viewers also liked (15)

Internship report
Internship reportInternship report
Internship report
 
Architecture Internship Report by Lim Joe Onn
Architecture Internship Report by Lim Joe OnnArchitecture Internship Report by Lim Joe Onn
Architecture Internship Report by Lim Joe Onn
 
District court visit report
District court visit reportDistrict court visit report
District court visit report
 
MBA Internship Report
MBA Internship ReportMBA Internship Report
MBA Internship Report
 
Summer internship presentation development process of startups from start to...
Summer internship presentation  development process of startups from start to...Summer internship presentation  development process of startups from start to...
Summer internship presentation development process of startups from start to...
 
Startup Experienceships - An Internship Revolution
Startup Experienceships - An Internship RevolutionStartup Experienceships - An Internship Revolution
Startup Experienceships - An Internship Revolution
 
Sixth sense tecnology.
Sixth sense tecnology.Sixth sense tecnology.
Sixth sense tecnology.
 
Internship final presentation GraphicPeople
Internship final presentation GraphicPeopleInternship final presentation GraphicPeople
Internship final presentation GraphicPeople
 
SIXTH SENSE TECHNOLOGY REPORT
SIXTH SENSE TECHNOLOGY REPORTSIXTH SENSE TECHNOLOGY REPORT
SIXTH SENSE TECHNOLOGY REPORT
 
Project Report
Project ReportProject Report
Project Report
 
Web Development on Web Project Report
Web Development on Web Project ReportWeb Development on Web Project Report
Web Development on Web Project Report
 
Ecommerce website proposal
Ecommerce website proposalEcommerce website proposal
Ecommerce website proposal
 
E commerce project report
E commerce project report E commerce project report
E commerce project report
 
Online shopping report-6 month project
Online shopping report-6 month projectOnline shopping report-6 month project
Online shopping report-6 month project
 
Summer internship report L&T
Summer internship report L&TSummer internship report L&T
Summer internship report L&T
 

Similar to Internship Report

WSO2 Internship Report
WSO2 Internship ReportWSO2 Internship Report
WSO2 Internship ReportUjitha Iroshan
 
Training Report WSO2 internship
Training Report  WSO2 internshipTraining Report  WSO2 internship
Training Report WSO2 internshipKeet Sugathadasa
 
HMT Machine Tools Ltd Ajmer Practical Summer Training Report
HMT Machine Tools Ltd Ajmer Practical Summer Training ReportHMT Machine Tools Ltd Ajmer Practical Summer Training Report
HMT Machine Tools Ltd Ajmer Practical Summer Training ReportSiddharth Bhatnagar
 
Saqib 19AU014 Industry training report.pdf
Saqib 19AU014 Industry training report.pdfSaqib 19AU014 Industry training report.pdf
Saqib 19AU014 Industry training report.pdfahmadravian317
 
Satellite Systems and Terrestrial TV Distribution and receiving systems
Satellite Systems and Terrestrial TV Distribution and receiving systems Satellite Systems and Terrestrial TV Distribution and receiving systems
Satellite Systems and Terrestrial TV Distribution and receiving systems Chamira Nanayakkara
 
Industrial Training Report on PLC & SCADA
Industrial Training Report on PLC & SCADAIndustrial Training Report on PLC & SCADA
Industrial Training Report on PLC & SCADAAman Jaiswal
 
Wioska moldings private limited
Wioska moldings private limitedWioska moldings private limited
Wioska moldings private limitedAkhilendra Shukla
 
Internship report-csit-isp_networking
 Internship report-csit-isp_networking Internship report-csit-isp_networking
Internship report-csit-isp_networkingsagarAcharya35
 
Statement Of Purpose For Industrial Engineering
Statement Of Purpose For Industrial EngineeringStatement Of Purpose For Industrial Engineering
Statement Of Purpose For Industrial EngineeringMegan Jones
 
Internship Report - Hari Rijal.pdf
Internship Report - Hari Rijal.pdfInternship Report - Hari Rijal.pdf
Internship Report - Hari Rijal.pdfStudyNotesNepal
 
Traning Report on Renult service station
Traning Report on Renult service stationTraning Report on Renult service station
Traning Report on Renult service stationankitsharma335513
 
Documentation 140612091527-phpapp01
Documentation 140612091527-phpapp01Documentation 140612091527-phpapp01
Documentation 140612091527-phpapp01Mahesh Jadhav
 

Similar to Internship Report (20)

Experience at WSO2 as an Intern
Experience at WSO2 as an InternExperience at WSO2 as an Intern
Experience at WSO2 as an Intern
 
WSO2 Internship Report
WSO2 Internship ReportWSO2 Internship Report
WSO2 Internship Report
 
Internship Wso2
Internship Wso2Internship Wso2
Internship Wso2
 
Training Report WSO2 internship
Training Report  WSO2 internshipTraining Report  WSO2 internship
Training Report WSO2 internship
 
Final Report v3
Final Report v3Final Report v3
Final Report v3
 
training report
training report training report
training report
 
HMT Machine Tools Ltd Ajmer Practical Summer Training Report
HMT Machine Tools Ltd Ajmer Practical Summer Training ReportHMT Machine Tools Ltd Ajmer Practical Summer Training Report
HMT Machine Tools Ltd Ajmer Practical Summer Training Report
 
Placement Report
Placement ReportPlacement Report
Placement Report
 
Saqib 19AU014 Industry training report.pdf
Saqib 19AU014 Industry training report.pdfSaqib 19AU014 Industry training report.pdf
Saqib 19AU014 Industry training report.pdf
 
Satellite Systems and Terrestrial TV Distribution and receiving systems
Satellite Systems and Terrestrial TV Distribution and receiving systems Satellite Systems and Terrestrial TV Distribution and receiving systems
Satellite Systems and Terrestrial TV Distribution and receiving systems
 
Internship at SELISE
Internship at SELISEInternship at SELISE
Internship at SELISE
 
Industrial Training Report on PLC & SCADA
Industrial Training Report on PLC & SCADAIndustrial Training Report on PLC & SCADA
Industrial Training Report on PLC & SCADA
 
Wioska moldings private limited
Wioska moldings private limitedWioska moldings private limited
Wioska moldings private limited
 
Internship Report
Internship ReportInternship Report
Internship Report
 
1st Report at Nikini Automation1
1st Report at Nikini Automation11st Report at Nikini Automation1
1st Report at Nikini Automation1
 
Internship report-csit-isp_networking
 Internship report-csit-isp_networking Internship report-csit-isp_networking
Internship report-csit-isp_networking
 
Statement Of Purpose For Industrial Engineering
Statement Of Purpose For Industrial EngineeringStatement Of Purpose For Industrial Engineering
Statement Of Purpose For Industrial Engineering
 
Internship Report - Hari Rijal.pdf
Internship Report - Hari Rijal.pdfInternship Report - Hari Rijal.pdf
Internship Report - Hari Rijal.pdf
 
Traning Report on Renult service station
Traning Report on Renult service stationTraning Report on Renult service station
Traning Report on Renult service station
 
Documentation 140612091527-phpapp01
Documentation 140612091527-phpapp01Documentation 140612091527-phpapp01
Documentation 140612091527-phpapp01
 

Recently uploaded

Drug Information Services- DIC and Sources.
Drug Information Services- DIC and Sources.Drug Information Services- DIC and Sources.
Drug Information Services- DIC and Sources.raviapr7
 
How to Show Error_Warning Messages in Odoo 17
How to Show Error_Warning Messages in Odoo 17How to Show Error_Warning Messages in Odoo 17
How to Show Error_Warning Messages in Odoo 17Celine George
 
Clinical Pharmacy Introduction to Clinical Pharmacy, Concept of clinical pptx
Clinical Pharmacy  Introduction to Clinical Pharmacy, Concept of clinical pptxClinical Pharmacy  Introduction to Clinical Pharmacy, Concept of clinical pptx
Clinical Pharmacy Introduction to Clinical Pharmacy, Concept of clinical pptxraviapr7
 
DUST OF SNOW_BY ROBERT FROST_EDITED BY_ TANMOY MISHRA
DUST OF SNOW_BY ROBERT FROST_EDITED BY_ TANMOY MISHRADUST OF SNOW_BY ROBERT FROST_EDITED BY_ TANMOY MISHRA
DUST OF SNOW_BY ROBERT FROST_EDITED BY_ TANMOY MISHRATanmoy Mishra
 
The Stolen Bacillus by Herbert George Wells
The Stolen Bacillus by Herbert George WellsThe Stolen Bacillus by Herbert George Wells
The Stolen Bacillus by Herbert George WellsEugene Lysak
 
How to Add a New Field in Existing Kanban View in Odoo 17
How to Add a New Field in Existing Kanban View in Odoo 17How to Add a New Field in Existing Kanban View in Odoo 17
How to Add a New Field in Existing Kanban View in Odoo 17Celine George
 
Patient Counselling. Definition of patient counseling; steps involved in pati...
Patient Counselling. Definition of patient counseling; steps involved in pati...Patient Counselling. Definition of patient counseling; steps involved in pati...
Patient Counselling. Definition of patient counseling; steps involved in pati...raviapr7
 
Practical Research 1: Lesson 8 Writing the Thesis Statement.pptx
Practical Research 1: Lesson 8 Writing the Thesis Statement.pptxPractical Research 1: Lesson 8 Writing the Thesis Statement.pptx
Practical Research 1: Lesson 8 Writing the Thesis Statement.pptxKatherine Villaluna
 
Presentation on the Basics of Writing. Writing a Paragraph
Presentation on the Basics of Writing. Writing a ParagraphPresentation on the Basics of Writing. Writing a Paragraph
Presentation on the Basics of Writing. Writing a ParagraphNetziValdelomar1
 
HED Office Sohayok Exam Question Solution 2023.pdf
HED Office Sohayok Exam Question Solution 2023.pdfHED Office Sohayok Exam Question Solution 2023.pdf
HED Office Sohayok Exam Question Solution 2023.pdfMohonDas
 
Ultra structure and life cycle of Plasmodium.pptx
Ultra structure and life cycle of Plasmodium.pptxUltra structure and life cycle of Plasmodium.pptx
Ultra structure and life cycle of Plasmodium.pptxDr. Asif Anas
 
2024.03.23 What do successful readers do - Sandy Millin for PARK.pptx
2024.03.23 What do successful readers do - Sandy Millin for PARK.pptx2024.03.23 What do successful readers do - Sandy Millin for PARK.pptx
2024.03.23 What do successful readers do - Sandy Millin for PARK.pptxSandy Millin
 
How to Manage Cross-Selling in Odoo 17 Sales
How to Manage Cross-Selling in Odoo 17 SalesHow to Manage Cross-Selling in Odoo 17 Sales
How to Manage Cross-Selling in Odoo 17 SalesCeline George
 
In - Vivo and In - Vitro Correlation.pptx
In - Vivo and In - Vitro Correlation.pptxIn - Vivo and In - Vitro Correlation.pptx
In - Vivo and In - Vitro Correlation.pptxAditiChauhan701637
 
CAULIFLOWER BREEDING 1 Parmar pptx
CAULIFLOWER BREEDING 1 Parmar pptxCAULIFLOWER BREEDING 1 Parmar pptx
CAULIFLOWER BREEDING 1 Parmar pptxSaurabhParmar42
 
CapTechU Doctoral Presentation -March 2024 slides.pptx
CapTechU Doctoral Presentation -March 2024 slides.pptxCapTechU Doctoral Presentation -March 2024 slides.pptx
CapTechU Doctoral Presentation -March 2024 slides.pptxCapitolTechU
 
AUDIENCE THEORY -- FANDOM -- JENKINS.pptx
AUDIENCE THEORY -- FANDOM -- JENKINS.pptxAUDIENCE THEORY -- FANDOM -- JENKINS.pptx
AUDIENCE THEORY -- FANDOM -- JENKINS.pptxiammrhaywood
 
Education and training program in the hospital APR.pptx
Education and training program in the hospital APR.pptxEducation and training program in the hospital APR.pptx
Education and training program in the hospital APR.pptxraviapr7
 
How to Add Existing Field in One2Many Tree View in Odoo 17
How to Add Existing Field in One2Many Tree View in Odoo 17How to Add Existing Field in One2Many Tree View in Odoo 17
How to Add Existing Field in One2Many Tree View in Odoo 17Celine George
 
Benefits & Challenges of Inclusive Education
Benefits & Challenges of Inclusive EducationBenefits & Challenges of Inclusive Education
Benefits & Challenges of Inclusive EducationMJDuyan
 

Recently uploaded (20)

Drug Information Services- DIC and Sources.
Drug Information Services- DIC and Sources.Drug Information Services- DIC and Sources.
Drug Information Services- DIC and Sources.
 
How to Show Error_Warning Messages in Odoo 17
How to Show Error_Warning Messages in Odoo 17How to Show Error_Warning Messages in Odoo 17
How to Show Error_Warning Messages in Odoo 17
 
Clinical Pharmacy Introduction to Clinical Pharmacy, Concept of clinical pptx
Clinical Pharmacy  Introduction to Clinical Pharmacy, Concept of clinical pptxClinical Pharmacy  Introduction to Clinical Pharmacy, Concept of clinical pptx
Clinical Pharmacy Introduction to Clinical Pharmacy, Concept of clinical pptx
 
DUST OF SNOW_BY ROBERT FROST_EDITED BY_ TANMOY MISHRA
DUST OF SNOW_BY ROBERT FROST_EDITED BY_ TANMOY MISHRADUST OF SNOW_BY ROBERT FROST_EDITED BY_ TANMOY MISHRA
DUST OF SNOW_BY ROBERT FROST_EDITED BY_ TANMOY MISHRA
 
The Stolen Bacillus by Herbert George Wells
The Stolen Bacillus by Herbert George WellsThe Stolen Bacillus by Herbert George Wells
The Stolen Bacillus by Herbert George Wells
 
How to Add a New Field in Existing Kanban View in Odoo 17
How to Add a New Field in Existing Kanban View in Odoo 17How to Add a New Field in Existing Kanban View in Odoo 17
How to Add a New Field in Existing Kanban View in Odoo 17
 
Patient Counselling. Definition of patient counseling; steps involved in pati...
Patient Counselling. Definition of patient counseling; steps involved in pati...Patient Counselling. Definition of patient counseling; steps involved in pati...
Patient Counselling. Definition of patient counseling; steps involved in pati...
 
Practical Research 1: Lesson 8 Writing the Thesis Statement.pptx
Practical Research 1: Lesson 8 Writing the Thesis Statement.pptxPractical Research 1: Lesson 8 Writing the Thesis Statement.pptx
Practical Research 1: Lesson 8 Writing the Thesis Statement.pptx
 
Presentation on the Basics of Writing. Writing a Paragraph
Presentation on the Basics of Writing. Writing a ParagraphPresentation on the Basics of Writing. Writing a Paragraph
Presentation on the Basics of Writing. Writing a Paragraph
 
HED Office Sohayok Exam Question Solution 2023.pdf
HED Office Sohayok Exam Question Solution 2023.pdfHED Office Sohayok Exam Question Solution 2023.pdf
HED Office Sohayok Exam Question Solution 2023.pdf
 
Ultra structure and life cycle of Plasmodium.pptx
Ultra structure and life cycle of Plasmodium.pptxUltra structure and life cycle of Plasmodium.pptx
Ultra structure and life cycle of Plasmodium.pptx
 
2024.03.23 What do successful readers do - Sandy Millin for PARK.pptx
2024.03.23 What do successful readers do - Sandy Millin for PARK.pptx2024.03.23 What do successful readers do - Sandy Millin for PARK.pptx
2024.03.23 What do successful readers do - Sandy Millin for PARK.pptx
 
How to Manage Cross-Selling in Odoo 17 Sales
How to Manage Cross-Selling in Odoo 17 SalesHow to Manage Cross-Selling in Odoo 17 Sales
How to Manage Cross-Selling in Odoo 17 Sales
 
In - Vivo and In - Vitro Correlation.pptx
In - Vivo and In - Vitro Correlation.pptxIn - Vivo and In - Vitro Correlation.pptx
In - Vivo and In - Vitro Correlation.pptx
 
CAULIFLOWER BREEDING 1 Parmar pptx
CAULIFLOWER BREEDING 1 Parmar pptxCAULIFLOWER BREEDING 1 Parmar pptx
CAULIFLOWER BREEDING 1 Parmar pptx
 
CapTechU Doctoral Presentation -March 2024 slides.pptx
CapTechU Doctoral Presentation -March 2024 slides.pptxCapTechU Doctoral Presentation -March 2024 slides.pptx
CapTechU Doctoral Presentation -March 2024 slides.pptx
 
AUDIENCE THEORY -- FANDOM -- JENKINS.pptx
AUDIENCE THEORY -- FANDOM -- JENKINS.pptxAUDIENCE THEORY -- FANDOM -- JENKINS.pptx
AUDIENCE THEORY -- FANDOM -- JENKINS.pptx
 
Education and training program in the hospital APR.pptx
Education and training program in the hospital APR.pptxEducation and training program in the hospital APR.pptx
Education and training program in the hospital APR.pptx
 
How to Add Existing Field in One2Many Tree View in Odoo 17
How to Add Existing Field in One2Many Tree View in Odoo 17How to Add Existing Field in One2Many Tree View in Odoo 17
How to Add Existing Field in One2Many Tree View in Odoo 17
 
Benefits & Challenges of Inclusive Education
Benefits & Challenges of Inclusive EducationBenefits & Challenges of Inclusive Education
Benefits & Challenges of Inclusive Education
 

Internship Report

  • 1. UNIVERSITY OF MORATUWA Faculty of Engineering Non-GPA Module 3992: Industrial Training TRAINING REPORT Name : B. S. Wijeweera Registration Number : 090587J Field : Computer Science and Engineering Training Establishment : WSO2 Lanka (pvt) Ltd Training Period : 15.05.20121 -28.10.2012 Date of Submission : 09.11.2012
  • 2. PREFACE This document contains the internship period I had from 15th May 2012 – 29th October 2012 at WSO2 Lanka (pvt) Ltd as a trainee software engineer. This document contains three main chapters that explain different aspects of experiences I got through internship period. Therefore this contains basic information about the training establishment and descriptive information on the training I got and my opinions on the overall internship period considering the whole experience. The initial chapter is dedicated for the detailed information on the training establishment. It is difficult to work comfortably without having a sound knowledge about the functionalities, procedures, hierarchy and structure of the company. Therefore meanwhile giving my maximum contribution to the company I have to have a good understanding on the business activities, technologies, standards and strategies they follow. The second chapter is completely for expressing the experience I had during internship period. This includes all the technical works I have covered, new technologies I have gone through, non-technical experiences and difficulties I had as well. This describes the projects I have covered which were given to me and how I overcome the obstacles I met. To explain the implementation of projects I have used some diagrams as I feel that would be the best option. This section describes in detail about the Resequencing Message Processor implementation and JDBC Message Store implementation in the WSO2 Enterprise Service Bus along with the concepts, tools and technologies which I got familiar with. The implementation designs and deriving final decisions on implementations are also included with in the section. Non- technical experiences such as inter-house competitions, celebrations had a great effect on building good personality and collaboratively work with the rest of the staff. In the last chapter, I have expressed my personal feelings on the whole training period. In addition to that I have provided a personal a personal assessment on my experience from the beginning to the end of training program along with suggestions to improve. Page | i
  • 3. ACKNOWLEDGEMENTS On my report about internship period, it’s my privilege to thank for all the people who contributed to make this period a great experience for my life. If not for the commitment of them, from arranging training establish selections to the end of entire 24 weeks, it would not be this much interesting. I should thank Dr. Chandana Gamage, the Head of Department, Computer Science and Engineering, University of Moratuwa for the effort taken to provide us with training establishments. I should also grateful to Ms. Sachini Weerawardhana, the Industrial Training Coordinator for her dedication to make sure every student is getting a good training establishment, organizing company presentations and providing necessary guidance in selecting a suitable training place for requirements. I am grateful to Mr. Nihal Wijeyewickrame, the director of Industrial Training Division, University of Moratuwa and all the staff in Industrial Training Division for providing opportunity to have a great internship period and examining the quality of training. Also I should thankful to NAITA (National Apprentice and Industrial Training Authority) for providing guidance for successful training experience from the beginning to the completion of internship period. I must thankful to Dr. Sanjiva Weerawarana, Founder, Chairman and CEO of WSO2 for providing us this golden opportunity to work within a globally recognized company with a friendly environment. I should thankful to Mr.Waruna Ranasinghe, Senior Software Engineer and Mr. Thilina Mahesh, Senior Software Engineer who interviewed and recommended me for the internship at WSO2. I should thankful to Mr. Samisa Abeysinghe, VP of Engineering for giving us the guidance on how to improve our knowledge and skills with the environment provided by WSO2 to build our career. I am thankful to Ms. Udeshika Ratnavira, Senior Manager, Administration and HR for her help given to solve issues I came up with and coordination with the university. I should also thankful to Mr. Prabath Siriwardena, Senior Architect for appointing us to different products within the company. Also I should thankful to Dr. Srinath Perera, Senior Software Architect for his friendly opinions and suggestions to make my projects success. I am so much grateful to the ESB (Enterprise Service Bus) team members for all the support given throughout my internship period at WSO2, because without them I won’t be able to Page | ii
  • 4. catch up things this much easily. Special thank should go to Mr. Kasun Indrasiri, associated Tech Lead and Mr. Miyuru Wanninayaka, senior software engineer for their mentorship during my period at WSO2. I should highly appreciate their clarifications done whenever I got struck, although they have very busy schedules. I also should thankful to Mr. Charith Wickramarachchi, a senior software engineer who was left for his PhD during my internship period, guided me a lot even after left the WSO2, to complete Resequencing Message Processor project. I am also thankful to other members in ESB team, Mr. Dushan Abeyruwan, a senior software engineer, Mr. Isuru Udana, a software engineer and Ms. Charitha Madurangi, a software engineer for the friendly environment provided. Even though outside the team I assigned I should thankful to Mr. Shammi Jayasinghe, a senior software engineer and Mr. Hasitha Abeykoon, a software engineer, for their help since I have closely worked with their product too. I should also thankful to Mr. Dharshana Warusawithana, a software engineer and Mr. Nuwan Wimalasekara, a software engineer who helped me a lot during test automation period. Without them I won’t be able to solve problems I faced and do well in writing automated tests. I am thankful to each and every technical and non-technical member in WSO2 family for the friendly environment provided and help me as soon as whenever I need. Because of that I did not have to bother about asking for technical and non-technical help. Finally, thank you very much everyone for making my internship period such a remarkable experience for my life. Page | iii
  • 5. TABLE OF CONTENTS 1. Introduction to the Training Establishment ....................................................................... 1 1.1 WSO2 .......................................................................................................................... 1 1.2 History of WSO2 ......................................................................................................... 3 1.3 Vision of WSO2 .......................................................................................................... 3 1.3.1 Reinvent the Technology ..................................................................................... 3 1.3.2 Reinvent the Business Relationship ..................................................................... 4 1.3.3 Reinvent the Support Model ................................................................................ 4 1.3.4 Create a Great Place to Work............................................................................... 5 1.4 WSO2 Business Model ............................................................................................... 5 1.5 Support and Service Model ......................................................................................... 6 1.5.1 Community Support ............................................................................................. 6 1.5.2 Evaluation Support............................................................................................... 6 1.5.3 Development Support .......................................................................................... 7 1.5.4 Production Support .............................................................................................. 7 1.5.5 Quick Start Support.............................................................................................. 7 1.5.6 TurnKey Packages ............................................................................................... 8 1.6 Organizational Structure ............................................................................................. 8 1.6.1 Employee Hierarchy ............................................................................................ 8 1.6.2 Exchanging Ideas ................................................................................................. 9 1.7 WSO2 Team .............................................................................................................. 10 1.8 WSO2 Products and Services.................................................................................... 12 1.8.1 Enterprise Service Bus (ESB) ............................................................................ 13 1.9 Performance of WSO2 .............................................................................................. 15 1.9.1 Strengths ............................................................................................................ 15 1.9.2 Weaknesses ........................................................................................................ 16 Page | iv
  • 6. 1.9.3 Opportunities...................................................................................................... 17 1.9.4 Threats................................................................................................................ 17 1.10 Service to Sri Lankan Society ............................................................................... 17 1.11 Suggestions to improve ......................................................................................... 18 2. Training Experience ......................................................................................................... 19 2.1 Stepping in to WSO2 Team ...................................................................................... 19 2.2 Induction.................................................................................................................... 20 2.3 Development Environment ....................................................................................... 20 2.4 Axis2 Web Services .................................................................................................. 22 2.5 Trying out WSO2 ESB .............................................................................................. 23 2.6 Resequencing Message Processor ............................................................................. 23 2.6.1 Introduction ........................................................................................................ 24 2.6.2 Resequencer ....................................................................................................... 24 2.6.3 Architecture........................................................................................................ 24 2.6.4 Resequencing Processor..................................................................................... 25 2.6.5 Selecting initial sequence number ..................................................................... 26 2.6.6 Resequencing Processor Configuration ............................................................. 27 2.6.7 Additional Modifications Made ......................................................................... 28 2.7 Test Automation ........................................................................................................ 29 2.8 JDBC Message Store................................................................................................. 31 2.8.1 Introduction ........................................................................................................ 31 2.8.2 Implementation .................................................................................................. 31 2.8.3 Advantages over other message stores .............................................................. 32 2.8.4 Configuration of JDBC Message Store.............................................................. 33 2.8.5 Final architecture ............................................................................................... 34 2.9 Implementing EAI Patterns using WSO2 ESB ......................................................... 34 2.9.1 Patterns............................................................................................................... 35 Page | v
  • 7. 2.9.1.1 Implementing Test Message EAI Pattern....................................................... 35 2.9.1.2 Implementing Idempotent Receiver EAI Pattern ........................................... 38 2.9.1.3 Implementing Normalizer EAI Pattern .......................................................... 40 2.10 Training Sessions................................................................................................... 43 2.11 Non-Technical Experiences ................................................................................... 44 2.11.1 Demonstration .................................................................................................... 45 2.11.2 WSO2 Basket Ball Matches............................................................................... 45 2.11.3 Lunch out for interns.......................................................................................... 45 2.11.4 Celebrating Seven .............................................................................................. 45 3. Conclusion ....................................................................................................................... 46 3.1 Importance of Industrial Training ............................................................................. 46 3.2 Satisfaction on training establishment....................................................................... 46 3.3 Industrial Training Program ...................................................................................... 47 ANNEX.................................................................................................................................. viii REFERENCES ......................................................................................................................... xi ABBREVIATIONS .................................................................................................................xii Page | vi
  • 8. LIST OF FIGURES Figure 1.1 WSO2 Company Logo ............................................................................................. 1 Figure 1.2 Employee Hierarchy ................................................................................................. 9 Figure 2.1 Resequencing EAI Pattern...................................................................................... 24 Figure 2.2 Resequencing Processor Design ............................................................................. 24 Figure 2.3 Selecting Starting Sequence Number ..................................................................... 27 Figure 2.4 Construction of Persisting Message ....................................................................... 31 Figure 2.5 Architectural Diagram of JDBC Store ................................................................... 34 Figure 2.6 Test Message Component Diagram....................................................................... 35 Figure 2.7 Idempotent Receiver Pattern Design ...................................................................... 39 Figure 2.8 Normalizer Pattern Design Diagram ...................................................................... 41 Page | vii
  • 9. 1. Introduction to the Training Establishment 1.1 WSO2 Figure 1.1 WSO2 Company Logo The name WSO2 stands for Web Services Oxygen, since the company is truly inspired with Web Services and finding enterprise solutions in the web space. The company was established in 2005 by pioneers in XML (Extensible Markup Language) and Web Service technologies following open source standards. WSO2 offers a complete 100% free and open source SOA (Service Oriented Architecture) platform with cloud approach through WSO2 Stratos, the world’s only 100% open source PaaS (Platform as a Service) by recent times. The company is mainly focused on developing and producing world class products using the based on the free and open source Apache software stack. Therefore all the products are released under the Apache Software License. WSO2 has a team of locally and globally recognized software engineers who are really passionate with open source developments and enjoy their dedication to the industry. Most of the software engineers work there are committers of globally accepted software projects like Synapse, Axis2, Rampart, Sandesha, Transport, Commons, Cassandra of Apache Foundation and other software communities including Eclipse, Ruby and Linux. Products of WSO2 are developed on top of a core called “core carbon framework” which is using the Apache Axis2 as the base engine. The company encourages employees to come up with their own innovations to improve the framework and build their own personal brand through those. WSO2 is currently offering 12 products as web based solutions that have perfectly designed for a business solution. All WSO2 products can be tuned in to different customer environments by adding or dropping its features. For an example WSO2 ESB can be used for fast online transactions with dropping extra components which are not required or as a transport switcher by adding new features. StratosLive is an invention by WSO2 which provides all the products 100% free in the cloud environment. Page | 1
  • 10. Producing 100% free and open source products WSO2 has made a sustainable business. The business strategy at WSO2 is providing training, support, development and consultancy for their products to the interested customers. Since all the products are freely available, anyone can download them and play with it. If the customers satisfy with the product and willing to take WSO2 support and training to bring up a business solution for them, then they are charged for that service. The company also maintains a portal called “WSO2 Oxygen Tank” which contains a knowledge base, articles, slideshows, webinars, tutorials and screencasts which create a valuable free online resource for any SOA developer who interested in WSO2 products and technologies used by WSO2 products. Other than having connections with Apache Foundation, WSO2 has established many connections around the globe. Some of them are as follows, • SOAP, WSDL and WS-SEC standards • The World Wide Web Consortium (W3C) • Microsoft‟s InterOP Vendor Alliance • NBQSA Competitions • AMQP Working Group • OpenID Foundation • InfoCard Foundation WSO2 has offices in USA, UK and Sri Lanka with a worldwide customer base with different industries. The office at UK is mainly aimed for marketing and building up customer relations. USA office at Palo Alto is currently at growing stages and will soon start contributing to the development of products. The Sri Lankan branch act as the main research and development center for WSO2 and have three sub branches at No.59, Flower Road, Colombo 07, No. 50, Flower Road, Colombo 07 and No.58, Dharmapala Mawatha, Colombo 03. Even though having just 7 years of experience in industry, WSO2 developments have created products that can challenge the industrial giants which have been for many years. Some WSO2 customers have admired with the performance and light-weight solutions that WSO2 came up compared to IBM, Oracle and Microsoft. WSO2 has stated as a top open source SOA companies with a small team size. It’s proud to say that WSO2 has been able to highlight Sri Lanka among other countries in software industry while bringing a massive Page | 2
  • 11. opportunities and remarking the Sri Lankan contribution to the open source software industry. 1.2 History of WSO2 WSO2 has declared its birthday as 04th of August 2005 because lots of important things happened around that day including incorporation of USA company, incorporation of Sri Lankan company, incorporation of UK company and finalizing funding. At first the company came up with the name “Serendib Systems” and later changed to WSO2 because of a request from an investor [2]. After having the initial investments the company stated its developments step by steps with a group of talented, skillful people to bring the core carbon framework in to reality. Because of the sacrifices they did to overcome hard times finally WSO2 raised in the middleware industry and become ready to compete with the giants who were there for several years. Currently WSO2 has created a competitive environment for Oracle and IBM companies who are having similar kind of products. 1.3 Vision of WSO2 WSO2 always maintains a clear vision on future improvements regarding products, customers, employees and growth of technologies. Vision of WSO2 is created with the collaboration of following four main catagories. 1.3.1 Reinvent the Technology When WSO2 was establishing, there were giants in industry like Oracle, IBM. But WSO2 believed that they can re-invent the technology so that in-order to achieve the benefits that current industrial giants did not have. With the advantage of starting a project from scratch, WSO2 put the full effort to build up Carbon platform, which is currently considered as one of the most advanced middleware platform. To avoid from foreseeable pitfalls, the platform was designed to defend issues and increase the performance. By adopting OSGi (Open Services Gateway initiative) framework, components of framework enables lean, high performance approach with self-consistency across the platform and provide pluggable behavior. From that approach user will get the opportunity to use the component what he requires and come up with a solution for his needs. Beyond being able to customize the products, WSO2 gives opportunity for building multi-tenancy, elasticity, instant provisioning, monitoring the Page | 3
  • 12. performance and make the platform as a service (PaaS) in public and private clouds. In that manner WSO2 is playing a key role in cloud computing, which is an emerging field in computing. 1.3.2 Reinvent the Business Relationship Although being at the leading edge of technologies, WSO2 has identified the quality of business relationship with customers as the core value. Because of that WSO2 has taken necessary steps of being a customer oriented company. All the software are 100% free and open source and built under a fully open and transparent development process at wso2.org mailing lists and at mailing lists in the Apache Software Foundation. So there is no license fees, registrations, limited downloads or trial expiration period as all the products are released under Apache License 2.0 which means there are no restrictions on using or developing products. There are no special types of license like Community license or Evaluation license and one can have the same experience on a particular version of a product. The unique value that WSO2 provide is the relationship with customers in customizing products to meet the maximum efficiency that the customer requires. Through highest quality training, support, consulting services, 24x7x365 production support or a complete solution will give required unique solution for each customer. 1.3.3 Reinvent the Support Model For a successful business it is not just enough to have a good marketing section, but it is essential to have a very good customer support service which can understand the responsibility of running the system. Beyond conventional supporting systems, WSO2 uses online support system, which allows users can direct the issues to the best source of expertise including WSO2 developers on the product or committers to the open source project. Through that system WSO2 lets the users to quickly interact with the best person in the world directly. WSO2 does not uses special people called “Support Engineers” but uses engineers who contribute to development as they know every nook and corner of the product, and can give the exact solution that customer requires. When required, WSO2 provide hot fixes, patches, and service packs to make the system up and running well. Beyond production support, WSO2 does not force customers to pay for bundle of services with little amount of value. Instead WSO2 gives opportunity for customers to purchase the Page | 4
  • 13. appropriate service they need. That would let the customer to maximize the value of return on investment as well. WSO2 believe that the successful customers are the best way to make the company a successful one among rest of the companies in global middleware market. 1.3.4 Create a Great Place to Work Developments of WSO2 are mainly going in Sri Lanka. Other than reinventing the technology, business relationships, and support model WSO2 brought Silicon Valley-style entrepreneurialism to Sri Lanka which allows employees to work in a good environment. Maintaining close relationships with top level local universities and building creative spirit, global leadership in open source technologies, WSO2 turned to be the best place for local innovators. Because of that WSO2 widens the opportunity of being a contributor of Apache Foundation, which is a well-known foundation for open source developments. WSO2 encourage employees without any hesitation to develop personal developments and even to leave the company for doctoral studies abroad. After studies employees are encourage joining WSO2, to lay foundation to new companies, or to find an employment in other organizations where they can apply their talent to make Sri Lanka and the whole world a better place. The vision of WSO2 is not based on monetary values but in gaining sustainable benefits to employees, the company and to Sri Lanka, which is truly admiring. And I believe WSO2 will be able to get the real values of Sri Lankan brains to do innovative things in open source world and will become a hotbed for local innovators. 1.4 WSO2 Business Model WSO2 offers a 100% FOSS (Free and Open Source) products, which can be downloaded at free-of-charge by any person and can make changes. Thereafter they can use famous building tools like Maven to build customized version of that product. This process makes customer to try on WSO2 products before they bring it in to the business which is completely differ from the giants in the industry like IBM or Oracle, where the customer has to pay even before getting the product. Through an enterprise system customers expect a great performance, low risk, good quality and availability of 24x7x365 support, where WSO2 identified as the opportunity to earn the Page | 5
  • 14. income. Selling software support, providing training, on-site and off-site consultancy for the product stack will bring the revenue for WSO2. In addition to that some client projects are also carried out. This innovative business model enables WSO2 to compete with industrial giants like IBM, Oracle and Microsoft who were there for decades and get the preference by customers. 1.5 Support and Service Model Categories of support offering can be list down as follows. • Community Support • Evaluation Support • Training • Development Support • On sight trainings • Off sight trainings • Production Support There are also Quick Start and Cloud Start supporting services which are designed to bring customers more familiar with WSO2 products. 1.5.1 Community Support Through online websites like Stackoverflow, WSO2 allows users to post questions and allow then to be public. Once a question has the tag WSO2, WSO2 puts full effort to solve those issues, believing that answering would benefit the whole community interest in WSO2 products. 1.5.2 Evaluation Support This service is designed to help customers in selecting technologies, strategies in early stages in middleware projects. For qualified customers some of the services are offered free of charge in this module. In this support WSO2 offers support with Middleware architecture consulting, Developing Requests For Information/Proposal (RFI/RFP), and Proof of Concept implementations. Page | 6
  • 15. 1.5.3 Development Support This support connects customers directly with customers to during critical development stages. This dramatically reduced the time between development and production. In here WSO2 help migrate, integrate, optimize, and manage your enterprise middleware deployments by efficiently getting direct access to master brains in products that customer consume. Following can be mention as the key benefits that customer gets through this supporting system, • Communication through a confidential forum with guaranteed response time. • Support for product tuning for security, performance, and other needs. • Provide selected pre-production patches. • WSO2 Carbon Studio Support, including assistance, issue resolution, and development. • Delivery of patches and service packs for the currently released version. Through this process developing engineers inside WSO2 team exposed to well recognize engineers in the world. 1.5.4 Production Support Production support is to secure mission critical applications are available 24x7x365. Bringing this kind of support customers is satisfied with the quality of service by WSO2. In addition to that customers who take Production Support will be eligible to have the latest feature upgrades, product patches and service packs. In this supporting system customers have the opportunity of determine the severity level of errors, according to guidelines in Annex as A2. 1.5.5 Quick Start Support This program as it name says, is helping customers to get start with WSO2 product with in considerably lesser amount of time. This will bring world class engineers on-site to work collaboratively with customer’s team. Through this WSO2 will be able to clarify the actual customer need and provide necessary guidance through middleware platform. Additionally this will help users to fine tune the WSO2 products that matches for their environment and requirements. For this process WSO2 provide two on-site engineers and one off-site engineer, in order to look up for quick tuning and development support. Page | 7
  • 16. 1.5.6 TurnKey Packages Beyond list of 12 products on top of Carbon platform, WSO2 offers a set of turnkey solution packages, with twenty four hour support and enterprise-level maintenance on the entire client system, installing monitoring and maintenance. Those products are addressing customers’ enterprise integration problems, security and identity problems, governance problems, and more, to reduce the complexities of deploying business solutions. Following list contains some examples created by WSO2 in this area. • WSO2 Security & Identity Gateway Solution • WSO2 Mobile Services Gateway Solution • WSO2 FIX Gateway Solution • WSO2 SAP Message Gateway Solution • WSO2 App Factory All the products above are based on award winning Carbon platform, so that it can be customized as components according to customers’ wishes and provide optimize solution for their investment. 1.6 Organizational Structure The company consists of very flat and informal structure. Within the company every one considered as equally no matter how much mature each one is or how old each one. This system creates team spirit among employees and creates opportunity to talk with anyone directly. 1.6.1 Employee Hierarchy For the purpose of HRM (Human Resource Management) tasks manageable following hierarchical structure applies. But in decision making, even an intern can take part if considerable amount of reasons in hand. So that makes the agile process of software development more efficient and practical because employees will get the opportunity of applying the perfect solution at right time. Page | 8
  • 17. Board VP SM VP Finance VP Marketing VP Sales Engineering Administration Account Directors Managers Sales Team Admin Staff Managers Team Architects Support Staff Members Business Tech Lead QA Team Analysts Software QA Engineer Figure 1.2 Employee Hierarchy 1.6.2 Exchanging Ideas WSO2 believes that using transparent mail lists is the best way to fix any issue very fast. This transparency allows anyone who has knowledge to reply immediately to the requester and produce maximum output and lower the confusions. WSO2 mail lists not only for the technical purposes but also for non-technical purposes as well. • Support _ dev – This is focusing on support for the developers and requesting for a support on a particular issue. • Training – To discuss things related to training inside WSO2 and outside things those employees can participate. • Marketing – Discuss matter related to marketing strategy etc. Anyone can post their ideas here on how to promote WSO2 products • Operations – Any issue regarding daily operations of the company goes here Eg. Cleaning, breaking down PCs • Infrastructure – Any matter regarding network, WSO2 servers etc. goes here • Vacation – Any type of leave taken should be informed to this mailing list • News – Any news regarding the industry that seems useful for the company are posted here Page | 9
  • 18. Club – Jokes and other stuff goes here for fun mostly Through this mailing list anyone in the company will have the opportunity to discuss with others about the issues, difficulties facing. There is no need to follow the hierarchy to solve issues. Even interns can directly meet Dr. Srinath Perera or Dr. Sanjiva Weerawarna if they have to make complicated decisions among development. 1.7 WSO2 Team The secret of conquering the middleware platform this much fast is the WSO2 Team, which consists of the best people for each field. Following is the current team of employees contributing their full commitment to the company. Leadership – WSO2 is leaded by very experienced and people across the globe that guides the company for this much success in just 7 years. • Mr. Sanjiva Weerawarana, PhD, Founder, Chairman and CEO • Mr. Paul Fremantle, PhD, Co-Founder and CTO • Mr. Jonathan Marsh, VP Business Development and Product Design • Ms. Monica Pal, VP Marketing • Mr. Samisa Abeysinghe, VP Engineering • Mr. Devaka Randeniya, VP Sales • Ms. Padmika Dissanaike, VP Finance • Ms. Puny Navaratne, Director, Legal • Ms. Hasmin Abdul Cader, Director, Marketing • Mr. Asanka Abeysinghe, Director, Solutions Architecture • Ms. Isabelle Mouny, Director, Product Management • Mr. Afkham Azeez – Director, Architecture • Ms. Udeshika Ratnavira, Senior Manager, Administration and HR Page | 10
  • 19. Advisors - The world class personalities and scholars who will be guiding the company through out with their experience and valuable insights on the industry are as follows. • Mr. Larry Augustin – Investor/Advisor • Mr. Geir Magnusson Jr. – VP Engineering, Joost • Mr. Brian Behlendorf – Founder & CTO, Collabnet • Mr. Tom O‟Reilly – Founder, O‟Reilly Media • Mr. Patrick Grady – Chairman & CEO, Rearden Commerce • Mr. Tony Pizi – CIO Platform Engineering, Deutsche Bank Product Teams - The engineering team –The engineers who work on the development, research, design and testing work fit into this category. Again divided according to the technology groups and sub divided depending on the product they work on as ESB team, Greg team, Identity Server team, Gadget Server team etc. Following list shows each TG (Technical Group) with the list of products they have. Development TG Application Server Tooling Gadget Server Solution TG App Factory API Manager Data TG Data Service Server Business Activity Monitor Complex Event Processing Business Rules Server Page | 11
  • 20. Integration TG Enterprise Service Bus Identity Server Message Broker Governance Registry Business Process Server Elastic Load Balancer Foundation TG Carbon Stratos The sales team – Deals with the customers and liaise between the customers and the developers. The marketing team – Works on marketing WSO2 products by means of sponsorships, advertisement campaigns, workshops, and webinars so on. Most of the events are organized with the guidance of marketing team having the whole WSO2 team support. The finance team – Takes care of the accounts, income, and expenditure of the company The administration team – Provides vital administration and human resource work handling salary payments, foreign visit arrangements etc... 1.8 WSO2 Products and Services All the WSO2 products and services are based on enterprise middleware called WSO2 Carbon which is available as downloadable form or as a Java PaaS – WSO2 Stratos. Aiming major business issues already exists WSO2 introduce a set of 12 products which are configurable according to user requirement. A high level view of categorizing WSO2 products attached with annex, A3. Following are brief description on all 12 products and services and I explained more on Enterprise Service Bus, the product I worked on. • WSO2 Application Server - web service hosting • WSO2 Enterprise Service Bus - message mediation • WSO2 Message Broker - message queuing and publishing services Page | 12
  • 21. WSO2 Data Services Server - managing data sources and data access • WSO2 Governance Registry and repository - managing WSDL, schemas, policies, life cycles and versioning • WSO2 Gadget Server - for portal services • WSO2 Web Services Frameworks for C, C++ and PHP – provide simple APIs for implementing web services and web service clients • WSO2 Identity Server - for authentication, single sign-on and access control • WSO2 Business Process Server – for processing business processors written in BPEL (Business Process Execution Language) • WSO2 Business Rules Server – combine SOA with business rules • WSO2 Complex Event Processing Server – Identify events and react to them • WSO2 Business Activity Monitor – monitor the performance and report failures in business processes • WSO2 Mashup Server – integrate rich content on internet with enterprise 1.8.1 Enterprise Service Bus (ESB) The images in Annex A1,2 and A1,3 shows the architectural diagram and the component diagram of WSO2 ESB. WSO2 ESB is a completely Java based middleware component that encapsulates the services from clients and vice versa. To do such a great work by consuming lesser amount of memory space, this product is supporting most of the current world message transporting technologies and messaging formats. Key features of WSO2 ESB can be categorized as follows, Connecting Anything to Anything ESB supports HTTP, HTTPS, POP, IMAP, SMTP, JMS, AMQP, FIX, TCP, UDP, FTPS, SFTP, CIFS, MLLP, SMS transports in exchanging messages. Consider about Message Format ESB supports JSON, XML, SOAP 1.1, SOAP 1.2, WS-*, HTML, EDI, HL7, OAGIS, Hessian, Text, JPEG, MP4, All binary formats, CORBA/IIOP type messages. It also consists of a bunch of adaptors which allows users to connect with external (Non-WSO2 tools) SAP BAPI & IDoc, PeopleSoft, MS Navision, IBM WebSphere MQ, Oracle AQ, MSMQ. By enabling connections with Salesforce, Paypal, LinkedIn, Twitter, and JIRA customer will have full freedom of connecting to applications in cloud. Page | 13
  • 22. Routing, Mediation and Transform ESB can be configured messages to be route according to Header based, Content based, Rule-based and Priority-based algorithms. It is also support message mediation by exhibiting almost all the EAI (Enterprise Application Integration) patterns.ESB also supports logging, event publishing and database accessing, API accessing functionalities along with XSLT, XPath, XQuery, and Smooks transformations. Message, Service, API and Security Gateway ESB exposes its interface to exchange messages in different forms and provide facilities to use software patterns including message decoupling, load balancing, fail- over endpoints, exposing RESTful APIs, enforcing standards, policy management via Governance Registry, Secure messaging with WS-Security, LDAP, OpenID, SAML, XACML and many more. High Performance, High Availability, Scalability and Stability WSO2 ESB is designed to support 1000s of concurrent non-blocking HTTP connections per server and a customer like eBay has the experience of using this ESB in such critical situations. This product guarantees that execution stability with low resources utilization during long time runs. Lightweight, Developer Friendly and Easy to Deploy More than setting configuration through coding WSO2 ESB gives flexible UI to setup the configuration user want along with mediations and error handling facilities. This ESB also can be made available to a company as a private cloud by allowing tenant users to access or as a public cloud with the help of WSO2 Stratos. Considering flexibility, WSO2 ESB allows customers to make their own mediators with their favorite language Java, Javascript, Groovy or Ruby and plug using class mediator. For any parties who are interested in developing this product can easily check out the source code and re-build custom version of the products using famous building tools Maven and Ant. Manage and monitor Through web console with web security, customer can access to the statistics page of WSO2 ESB to see the performance of it. This can also be integrated with Business Activity Monitors to take decisions in business activities. ESB also consists of flexible logging support with integration to the enterprise level logging systems. Also customers of this ESB have the luxury of using JMX MBeans for monitoring and management. Page | 14
  • 23. 1.9 Performance of WSO2 Immerging in middleware industry within 7 years is the best fact to show the performance of WSO2 other than anything else. Being a company with master minds in Sri Lanka, company has lots of lands marks [2] and it is guarantee that the company will have good achievements in future too. In addition to hear successful stories from customers WSO2 has won following highly recognized awards in the industry. • Kuppinger Cole European Identity Award 2011 - WSO2 was recognized for the innovative features of its open source, multi-tenant WSO2 Identity as a Cloud Service • SD Times 100 Award - For the fourth consecutive year, WSO2 was recognized as one of the “top leaders and innovators” in the software industry by the editors of SD TIMES. • Red Herring Asia 100 Award - WSO2 was awarded the Red Herring Asia 100 Award in 2006 for being one of the most promising private technology companies in Asia. • InfoWorld Best Open Source Software (Bossie) Award - WSO2 was named InfoWorld 2009 Best of Open Source Software (Bossie) Award winner and recognized for delivering WSO2 Carbon • National Best Quality Software Awards (NBQSA) - WSO2 walked away with: o WSO2 Enterprise Service Bus: Gold Award under Infrastructure & Tools Category and Overall Gold Award. o WSO2 Gadget Server: Silver Award under Research & Development Category. o WSO2 Data Services Server: Bronze Award under Infrastructure & Tools Category. 1.9.1 Strengths Carbon platform – Carbon platform is the backbone of every product in WSO2. It provides a complete middleware platform to make components on top of that. This innovative product provides user a componentized framework which the user can just use the components they want and pay for the service they use. This flexibility gave the chance to WSO2 to present the first PaaS – WSO2 Stratos. Every development in WSO2 has concerned with local and cloud Page | 15
  • 24. support due to this approaches, and will suite for future of middleware industry. The architecture of carbon platform is carefully designed to meet the challenges that could occur due to business matters. Flexible working culture –In WSO2, employees have more flexibility working environment. They have no exact time to start or ending work, but by giving a friendly working environment employees’ dedication towards the company has increased. They are also having the luxury of working from home also. Someone may wonder how such culture can improve the productivity of a company, but that system actually worked well in WSO2 because of employees’ heart feel to contribute to the company. Dedicated team with talents – Other than the infrastructure and facilities provided by the company, this is the main strength of WSO2. The engineering team of WSO2 consists of incomparable, world-class architects and developers having experience and contributions at global industry. Since they come from university background they have a smarter way of thinking compared to coders who have just dealt with programming stuffs. WSO2 having committers for all the products it gets from ASF to get the benefit of using it. In addition to that new comers coming from different backgrounds and fields share their experience and use their experience in every way they can to add more value to the company. Not only just developments, even engineers share their implementations and knowledge through writing blogs and tweeting. Open Source Company – By exposing the source code to the world everyone can have a look and try on those codes and identifies weaknesses and even if they interested they have the opportunity of fixing those. So this creates a large committee for helping WSO2 products outside the WSO2 to help, so customers do not have to take WSO2 products. 1.9.2 Weaknesses WSO2 provides a good environment and unforgettable period to the entire team. But there are few areas to be improved. Currently WSO2 working in three offices in Sri Lanka. Even though mailing lists and instant messaging services keep all employees close, in some situation it is not enough. So employees need to travel from one place to another is a kind of wasting valuable time. Brining all the offices to a same building would be a solution for this. I’m sure it will increase the productivity when an employee in a certain product has to consult an employee from another product. Page | 16
  • 25. Another drawback is less documentation to get familiar with technologies used in WSO2 products. This has been a big issue for all new team members to get the right idea on a product. If there was a good set of documents for new comers, it would be much easy to catch-up. Even though WSO2 maintain a huge set of documentations in WSO2 Oxygen Tank [5], information at there was not sufficient enough for certain tasks. If somehow WSO2 can improve this resource I’m sure that new comers to WSO2 and rest of WSO2 fans will get the benefit of it. 1.9.3 Opportunities Being closely working with local universities WSO2 gets the full benefit of having best brains in the country for development process. In addition to that working closely with ASF WSO2 has the golden opportunity of having the support for their base product from all over the world. In Sri Lanka still there is no company that follows the methodology of getting revenue through support system and would be more attractive way of having customers. Owning a componentized carbon platform, WSO2 has the opportunity of creating new solutions for many problems may arise in the world. 1.9.4 Threats In middleware industry WSO2 does not have local competitors, but it has to compete with industrial giants who have been in the industry for decades. Some of them are IBM, Oracle, Microsoft and Google. Products of WSO2 need to have the potential of being attracted over products by those companies. In addition to that developments of WSO2 is not aiming local machines but also for cloud infrastructure too, would be need to take more complex approach in development stages. 1.10 Service to Sri Lankan Society WSO2 was able to create new era for Sri Lankan software industry. In contrast to traditional software companies that act as branches of foreign software companies, WSO2 is formed as a Sri Lankan software company lead by Dr. Sanjiva Weerawarna, the former and the CEO of WSO2. In collaboration with ASF, gives more opportunity to Sri Lankan to contribute to world class projects and get the return back to WSO2. WSO2 encourages its employees to do further studies outside Sri Lanka and create opportunities to serve the nation after they have finished studies. Many computer science Page | 17
  • 26. graduates concerned about going abroad just after passing out, but WSO2 was able to get the benefits of those people to development of the company and in return providing a good environment to work with and knowledge on cutting edge technologies. Many WSO2 professionals provide mentoring to final year projects carried out by final year students and provide internships to students in Sri Lankan universities. From that undergraduates get exposed to new technologies that have a potential to change the world in near future. WSO2 has an annual event WSO2-Con to bring expertise in the world to Sri Lanka and provide opportunity for Sri Lankan professionals to meet them and provide opportunity to exchange technical and non-technical experiences, and Sri Lankan culture. This kind of contribution to the country shows the signs of being middleware industry a key role in Sri Lankan economy near future. 1.11 Suggestions to improve I have already mentioned few areas that WSO2 needs to work on to improve. First one was to bring all offices in Sri Lanka in to a single place in order to empower the developments carried out with different products. Other than development it would be easy to provide off- site support for the customers in different countries. When considering about customer support it would be more efficient if WSO2 can have a good developing team at Palo Alto office to access customers quickly compared to current method of visiting Sri Lankan development team abroad. Lack of documentation on products is also a problem for new comer to a product. If there were resources explaining the products and architectural decisions taken behind then, definitely it would be a great help. In addition to improve the WSO2 Oxygen Tank, keeping the articles up-to-date is also very important, since some features are left after certain releases. Within last 7 years of time WSO2 has done a lot in middleware industry. Because of that WSO2 holds a major role in Sri Lankan software industry. But the brand WSO2 is not popular among the general public and they are not aware about the world-class products that WSO2 has innovated with the help of Sri Lankan brains. If it is possible to make the brand among Sri Lankan general public, it would be more beneficial for the company. Page | 18
  • 27. 2. Training Experience 2.1 Stepping in to WSO2 Team On 15th of May 2012 is the unforgettable day of all twenty three interns who are selected for WSO2. In the morning we stepped in to main office located at Flower Road, Colombo 07. First of all we were given laptops for the use of internship period after confirming our details. Thereafter Ms. Udeshika Rathnavira gave her welcome speech and did a presentation to introduce WSO2 culture. She mainly focused on adapting to the flat structure of the company, how internship period differ from life at university, what are the benefits we get, how we should behave within the company, does and don’ts. After her speech she pointed us to System Engineers to resolve if there are any issues with our contact details or email address. On the same day we were group according different TGs and expect to go and meet team members. I was selected to Integration TG which was located at No.58, Dharmapala Mawatha, Colombo 03 at that time. After selections altogether there are five of us including myself, Pulasthi Mahawithana, Sameera Kannangara, Hasintha Indrajee and Sajini De Silva who selected for Integration TG left the main office and went to office at Colombo 03. For first few days we were shown a place at 6th floor to work. During first few days we didn’t appointed to work. So we installed required infrastructure to the laptops given to us. Then we went through products of WSO2 to get the basic knowledge we need. Meanwhile we share what we found through mails with the interns working in other offices. In addition to get the knowledge on WSO2 products we started getting to know about other technologies like SVN, Maven, Ant which we thought to be useful. Getting familiar with WSO2 products we tried to do as a collaborative work among ourselves. After working as a single team for about two weeks, we split into different products by Mr. Prabath Siriwardena who is in-charge of overall Integration technologies. From that day I have to work with ESB team which works for developing the product WSO2 Enterprise Service Bus. Mr. Kasun Indrasiri and Mr. Miyuru Wanninayaka were appointed to mentoring me during internship period. My first task was to check out Carbon Platform from the online SVN repository and build using Maven. That took couple of days since there were build failures and I had to consult members in ESB to get the required help. Meanwhile the Page | 19
  • 28. building process is going on I was asked to read the technical documents related to WSO2 ESB product to gain more detail knowledge on those. 2.2 Induction First day induction program was conducted by Ms. Udeshika Rathnavira, Senior Manager, Administration and HR with Ms. Hasmin Abdulcader, Director Marketing for twenty three of us. It was a friendly discussion which resolves our doubts and introduced WSO2 culture to us. They explained how flat hierarchy is maintained within the company and how each member is treated equally. They emphasized that we should talk to each other with their first names, even for the CEO of the company. In addition to that they briefly explained us about the history of WSO2, the business model used in WSO2, and facts that we should not exposed to external parties. During teatime in WSO2 every member supposed to come to dining area in each office and have snacks and tea. They also mentioned that is very important to share each ones experience with others during tea time. Other than tea time anyone can come to dining area to have refreshment while working. In the company there was no dress code we should wear, and we are free to wear casually. From those instructions given in induction program we realized that this place will not going to be that much hard to work with. Ms. Udeshika further explained that office hours are flexible and there will be no deadlines for our work load, but if we do more we can get more knowledge. Permanent employees working in WSO2 has the option of working from home, but interns will not get that chance since it violates the objectives of internship and it is impossible to do that since surely we will need the help of team we are working with. 2.3 Development Environment Ubuntu – Since an open source company most of the WSO2 employees were using Ubuntu, an open source Linux based OS and I too started to use Ubuntu. Installation of software including java installation were done using command line, Synaptic Package Manager, Gnome interface and got familiar with setting up environment variables on .bashrc file that was so different from Windows. But finally I was able to customize as I wish with the help of team members. Page | 20
  • 29. IntelliJ IDEA IDE – I was familiar with using NetBeans and Eclipse at university, but as lot of developers at WSO2 was using IntelliJ IDEA as their IDE tried to use that. The key-board centric IDE seemed fine and continued to master that IDE and worked using that. SVN - The primary mechanism of version controlling used at WSO2 is SVN. At the beginning only thing I did was checking out codes from WSO2 repo and later, we were given separate spaces at there to commit the codes and make them under version control. FireBug – This is a recommended tool for all the developers at WSO2 to use on any of the code they write. The tool is so smart that it run through our code and analyzing the patterns, highlights where bugs are possible. To achieve high quality in coding with minimum bugs this is a great tool to use. TestNG – This is the framework used by WSO2 to write automated test. There were several rules and annotations we should obey while writing a correct test. After writing a test on that framework TestNG execute those tests as instructed while building with Maven. Maven – It’s a very widely used open source software project management tool by Apache. Almost all the projects at WSO2 are managed using Maven with the pom.xml that describes the software project being built, its dependencies on other external modules and components, and the build order. That makes the project build process easy. In fixing dependencies Maven take the load of the developer to download them and fix with the project. Instead it dynamically downloads Java libraries and Maven plug-ins from one or more repositories, reading the pom.xml at build time. Maven provides built-in support for retrieving files from the Maven2 Central Repository and other Maven repositories. TcpMon – This is a very much useful debug tool that allows viewing messages and resending them. It can be set to a listening port in TcpMon and it shows messages that come to the port and continue the message without any change. It was great tool which helped me to analyze messages in developments and test automations. SOAPUI – This is a widely used tool at WSO2 for all sorts of tests. It is a free and open source cross-platform functional testing solution. I have become familiar with this tool in testing Resequencing Message Processor, because SOAP UI was the best choice to produce custom messages for a particular web service. Page | 21
  • 30. Surefire Reports – These are kind of reports generated after building WSO2 repository using Maven. These reports show the test failures and the error which causes the failure. These reports helped a lot in test automation season to check the test are running perfectly. 2.4 Axis2 Web Services WSO2 is totally focused on using web services efficiently to solve business problems. Therefore it was very important to learn the key basics used with this technology. For that purpose I was given time to go through articles published by ASF and have a good understanding of how Axis2engine works. Within that period of time I realized how messages pass through this engine, what are the handlers use, how handlers work together to do message processing, modules use in engine and how they interact with each other. A fundamental architecture of Apache Axis2 engine is shown in Annex, A4. This engine actually covers the most fundamentals of all WSO2 products that we should know. In addition to that I have to download and setup Axis2Server and tryout some web services too, which improved my skills in developing web services and gave me an exposure to WSDL. During creation of web services I have gone through four methods, • Deploying using Plain Old Java Objects (POJO) • Building the service using AXIOM's OMElement • Generating the service using Axis2 Databinding Framework (ADB) • Generating the service using XMLBeans I have also created clients for each service for testing. Through those works I was able to lay foundation on Messaging Exchanging Patterns (MEP) which is used in later works. Two major MEPs are as follows, • In-Out: The client sends a SOAP message to the server, which processes the message and sends a response back. • In-Only: The client sends a message to the server without expecting a response. The rest of other complicated MEPs are design on top of these two. So through understanding on these stuffs is very important since ESB works completely on the concept of messaging to interact clients and services. Page | 22
  • 31. 2.5 Trying out WSO2 ESB In theoretically I have heard about ESBs through lectures but I haven’t got a chance of using ESB. As an intern first I was given opportunity to try out samples [6] provided with ESB and learn about the capabilities that WSO2 ESB exhibit as a middleware. Following are some of those, • Using clients in different modes • Access to various types of EPRs (End Point References) • Use Mediation techniques • Handling Fault Messages • Load balancing over endpoints • Conversions in transport medium • Conversions in message formats After understanding those basic things I have to go through set of documents related to Message Store and Forwarding Pattern in WSO2 ESB. In those scenarios different types of Message Stores and Message Processors are used. Referring in to more details I become aware of the parameters they need to configure those to suite our needs and limitations of each implementation. 2.6 Resequencing Message Processor After having a basic understanding about background knowledge, Tech Lead of the team gave me a project to implement a Message Resequencing Processor. It is to be a new message processor which can send messages to a given sequence in an ordered manner. For that project I had to work closely with Message Broker team member Mr. Charith Wickramarachchi, who has implemented the message stores and processors in WSO2 ESB. He first explained me on how message stores and processors work and let me to read some important stuff related to those. Thereafter I closely worked with him in taking design decisions related to the implementation. To have initial implementation he introduced me to Synapse platform, Synapse dev. list and helped me to checkout from Synapse trunk. There after he let me to identify the correct place to do the implementation and guided me in doing implementation. Page | 23
  • 32. 2.6.1 Introduction Apache Synapse is a lightweight, high performing Enterprise Service Bus (ESB) that provides an exceptional support for XML, Web services and REST with the help of fast and asynchronous mediation engine. With this improvement Apache Synapse will get the capability of re-sequencing the messages which goes through it according to a given sequence number. In this article I'm going to explain on how to configure the reseqencer and how it behaves. 2.6.2 Resequencer Figure 2.1 Resequencing EAI Pattern Within Synapse the messages may take different routes due to routers, filters etc. Due to the characteristics of each route the time to process the message will vary. Thus the end results will not the same as the beginning. Some messages may arrive earlier than others. So this can be disadvantageous in a situation that order of delivering message matters. In order to overcome this issue, resequencing EAI pattern is introduced with a stateful processor called Resequencing Processor. 2.6.3 Architecture Implementing Resequencer can be done using by adding a message store and a resequencing message processor. The following diagram shows high-level view of it. Figure 2.2 Resequencing Processor Design Page | 24
  • 33. This resequencing processor will take the help of message store and message processor capability of the Synapse which are already presence. A message store is used to keep the messages that should be sent by the Resequencer in an ordered manner. The Resequencing Processor should be pointed to that store in order to retrieve and look the messages available in the store. All the messages that should be sent in a sequence must have a sequence number in a certain location of a message which can be accessible. 2.6.4 Resequencing Processor This Resequencing is completely responsible for re-ordering messages in a given message store. It can recognize the initial sequence number from the messages already in the store and inject messages to a given sequence in a given rate [10]. Implementation of the Resequencing Processor is done using the Scheduled Message Processor which is an abstract and gives the capability to implement a processor with scheduled tasks. So inherently the Resequencing Processor uses the Quartz Scheduler as an infrastructure. Other than the facilities inherited from Scheduling Message Processor, Resequencing Processor possess capabilities of deciding initial sequence number according to given configuration, store the state of the processor and so on. The benefits of the design will serve the Synapse as follows. • A separate storage is not needed. The resequencing processor can be attached to an in-memory store which is already added to Synapse. In addition to that Resequencer can work with persistence message stores too (which are not currently available in Synapse but can be added). • The message which is chosen by the Resequencer will be sent to a sequence. Therefore user will have more opportunity to process the message further. • The Resequencing Processor comes with a special algorithm to identify the starting sequence number. Therefore it can be plugged in to a message store which already have messages and continue re-sequencing. After selecting an initial sequence number Resequencing Processor checks the given to extract the message which contains required sequence number. Once the message containing required sequence number is found, message is directed to the given sequence for further mediation and required sequence number get increased by one. For searching required Page | 25
  • 34. message Resequencing Processor currently uses linear search through the messages in the message store. When a message is selected as the required message it should be removed from the message store, therefore it is important to use a message store which supports random removal of messages. If the user wants to connect to external message store, you just need to configure Store mediator according to that. Resequencing Processor does not required to change. It is very important to select the right type of message store for the purpose, since the Resequencing Processor will not remove messages from the store until it finds the message with required sequence number. 2.6.5 Selecting initial sequence number Resequencing Processor is designed to decide the starting sequence number automatically. Following logic is used to decide the initial sequence number. • When starting Synapse Resequencing Processor checks the attached message store for any messages. If any messages found, select the minimum sequence number as the initial sequence number. Else continue without selecting initial sequence number. • If initial sequence number is selected at the start up, continue sending messages to the given sequence. Otherwise waits for required number of messages to come within a certain timeout. • If the required numbers of messages are received, select initial sequence number from those and do further resequencing. If required number of messages are not received with in timeout, select the initial sequence number from available messages in the store. Page | 26
  • 35. Logical flow of electing initial sequence number is also can be shown using a flow chart as follows. Figure 2.3 Selecting Starting Sequence Number In the diagram N notates the number of messages that the Resequencing Processor expects after starting without having initial sequence number. P notates the number of attempts that processor should made to check whether that required number of required messages are available in the store. The value of the Delay remains constant since user can configure P value as they want. 2.6.6 Resequencing Processor Configuration Configuration of the Resequencing Message Processor can be shown as follows. <messageProcessor class="org.apache.synapse.message.processors.resequence.ResequencingProcessor" name="ResequencingProcessor" messageStore="MyQueue"> <parameter name="interval">10000</parameter> Page | 27
  • 36. <parameter name="seqNumXpath" xmlns:bank="http://bank.resequence.synapse.org" expression="//bank:display/bank:seqNo"/> <parameter name="nextEsbSequence">next_seq</parameter> <parameter name="requiredInitMessages">15</parameter> <parameter name="requiredInitMessagesDelay">2</parameter> <parameter name="deleteDuplicateMessages">true</parameter> </messageProcessor> In the attribute section of the message processor user should point to the class which the Resequencing Processor is implemented, name of the processor, the message store to use. Parameter interval is to set the invoke interval in milliseconds (default value is 1000ms). "nextEsbSequence" is to point the next sequence that the selected message should be forwarded next and it is essentially needed. "seqNumXpath" parameter is also an essential parameter and tells the processor about the path to extract sequence number from a message. Expression attribute of "seqNumXpath" parameter says the place to extract. It is important to say that the Message Processor Serializer and Message Processor Factory should be modified in order to use "seqNumXpath", hence Resequencing Processor too. "requiredInitMessages" and "requiredInitMessagesDelay" are for the N and P values in flow chart diagram respectively. They have default values 4 and 5 but can be configured as given. In addition to the given parameters, all the parameters inherited from Scheduled Message Processor can be used here. 2.6.7 Additional Modifications Made Resequencing Processor needs to use Xpath expressions to extract the sequence number from message context. For that purpose it is required to use a different type of parameter. Currently Synapse supports name-value type parameters only. Page | 28
  • 37. So I changed the Message Processor Factory and Message Processor Serializer in order to take name-expression parameters and create SynapseXpath objects during runtime. Because of that following type of configuration is also allowed in Message Processors. <messageProcessor class="org.apache.synapse.message.processors.resequence.ResequencingProcessor" name="Alfa Processor" messageStore="Message Store Name"> <parameter name="param1">value1</parameter> <parameter name="param2">value2</parameter> <parameter name="param3" xmlns:ns="http://url.org" expression="xpath expression"/> </messageProcessor> This modification will not affect any other configurations and can be used only by parameters inside Message Processor. 2.7 Test Automation During the middle of the internship period we had come across a very busy schedule because of product releases. Mainly we were divided in to two groups to help in automating tests in WSO2 ESB and WSO2 Greg. I was selected into WSO2 ESB test automation team. During initial days we had training sessions on the test automation framework Clarity, TestNG, and SOAP UI which was very useful in writing tests. For the coordination of ESB test automating team Mr. Dharshana Warusawithana and Mr. Nuwan Wimalasekara was appointed. Page | 29
  • 38. As a team we day-by-day automated the given test scenarios as we can. During first phase we are sub-grouped to each category of mediators in ESB and in the second phase we had to automate test scenarios related to customers’ issues. Following are details of some patches I have created during test automation period. In-mediator tests [7] - I have to deal with different test scenarios created for In-mediator of ESB and create relevant test to exhibit that they are functioning well Conditional Router Mediator tests [8] – Through this test automation I have to go through different aspects of conditional router mediator test scenarios. Some of those were, • Verifying whether child nodes execute correctly • Match elements with different conditions • Combining multiple matches • Use Regex for element matching etc. Validate mediator test [9] – In the set of validate mediator test, I have implemented a test related to validation of a schema according to dynamic changes. Through that test I have learnt about the validating a message body according to a schema specified. So it was a new and challenging experience for me as I have not dealt with such validation scenarios before. In addition to those test we were appointed to work on fixes created for customers and later added to the SVN trunk. In that period we exposed to various aspects of WSO2 ESB. Following are some of them in detail, Message Processor Persistence Test case – This test was to check the availability of Message Processor in the ESB configuration even after restarting the ESB.For this case I had to manually access the configuration files in ESB to check and verify it. Validity of responses after enabling nhttp transport Test case – This test was to check the basic functionality of nhttp transport use in WSO2 ESB. Through this I have learnt on configuring nhttp transport and validating the responses coming through it. Handling messages without Content-Type Test case – this was the most challenging of all, since Content-Type of a message is imposed by regulations. But a customer was getting messages without content type from an external party. So in that scenario WSO2 ESB fails to identify the messages and fail in the process. The most difficult part was to produce messages Page | 30
  • 39. without Content-Type since most of implementations add the Content-Type by default. So I had to look and learn about Apache Commons Http Client libraries to produce such messages. All the group who were selected to ESB test automation worked on these kind of test for about two months, and our effort make it easy for the ESB team to come up with good set of tests. 2.8 JDBC Message Store 2.8.1 Introduction Currently WSO2 ESB uses JMS queues as the persistent message stores which caused lots of problems and drawbacks in performance. In order to diminish those drawbacks and provide a more friendly way for data storing Mr. Miyuru Wanninayaka asked me to create JDBC store support for WSO2 ESB. As the initial steps I looked into the code level implementation of already existing JMS message store and come up with a solution. 2.8.2 Implementation After having research on JMS stores I came up with the following structure to implement serializable messages from SOAP messages mediate inside WSO2 ESB. Figure 2.4 Construction of Persisting Message Thereafter one by one I began to do the implementation on JDBC store and finally I was able to successfully test it with Sampling, Forwarding and Resequencing message processors. I have already committed my work to public Apache Synapse JIRA [11], so that in some day it will get added to the Apache Synapse. Following are details about classes in JDBC store. Page | 31
  • 40. JDBCMessageStore– Provides the fundamental interface to external parties by encapsulating the underlying implementations. This class exposes offer, poll, get, clear, poll and other generic methods of messages stores to outside parties. JDBCMessageStoreConstants – This class defines the related constant values for JDBC message store. This class make it easy for maintain JDBC store implementation by gathering all the constants in to a single place. JDBCUtil – This class was defined to provide necessary utility functionalities to JDBC operations. Basically it deals with creating connections and terminating connections, querying database tables etc. JDBCPersistenceHelper – This class is to help with converting SOAP messages in to serializable Java objects and the reverse process after querying the required. This works as an adaptor between database and ESB. Those classes along with the classes mentioned previously, created a successful JDBC Message Store. 2.8.3 Advantages over other message stores From the very beginning of the designing phase JDBC Message Store focused on eliminating the difficulties that faced when using JMS queues as message stores. So following list of aims are achieved from JDBC store, Easy to connect – It’s rather easy to connect with databases compared to JMS queues More operations on data – In JMS queues methods like random selecting messages are not supposed to support. But with JDBC it become a reality, and has operations very close to in-memory stores. Fast transactions – In test I have seen that JDBC stores are capable of handling about 2300 transactions per second which is 10 times faster than the existing system. Work with high capacity and long-time – Since JDBC Stores uses databases as the medium to store data, and can depend on up to Terabytes of data. It is also generally accepted that Databases capable of handling data for long-time compared to JMS queues. After having tests in different backgrounds with different configurations, I have seen that the outcomes of JDBC message store has achieved more than expected at the initial stages. Page | 32
  • 41. 2.8.4 Configuration of JDBC Message Store To use JDBC Message store customer has to add the required JDBC support. There after following configuration will allow any message processor to use JDBC message store as same as other message store. <store messageStore="MyStore"/> <messageStore class="org.apache.synapse.message.store.jdbc.JDBCMessageStore" name="MyStore"> <parameter name="store.jdbc.driver">com.mysql.jdbc.Driver</parameter> <parameter name="store.jdbc.connection.url"> jdbc:mysql://localhost:3306/mystore </parameter> <parameter name="store.jdbc.username">root</parameter> <parameter name="store.jdbc.password"></parameter> <parameter name="store.jdbc.table">store_table</parameter> </messageStore> In the above configuration first customer need to specify the JDBC Driver class he is supposed to use and other parameters like url, username and password which are specific to the database. In addition to the above method this implementation can also be used with already existing data sources. Page | 33
  • 42. 2.8.5 Final architecture After implementing the project, the final top level view with in ESB environment can be seen as follows, Figure 2.5 Architectural Diagram of JDBC Store According to the Fig. 2.5, JDBC Message store work as an intermediate party in between Store mediator in ESB and database. Additionally it provides interface to Message Processor, and then passes messages to another sequence to process the selected messages. 2.9 Implementing EAI Patterns using WSO2 ESB In the latter part of the internship I have to join with the collaborative work on constructing a wiki for WSO2 ESB. The sole purpose of the wiki was to show how WSO2 ESB can exhibit EAI patterns. EAI patterns are standard patterns that messaging systems like ESB should exhibit. If a messaging system can implement those patterns, it would be much easier for architects outside WSO2 to get a clear understanding on how to use ESB in their purposes. Actually those patterns provide a generic idea on ESB which can be understand by people who has the basic knowledge on messaging systems. Initially, there was a meeting among team members and distributed the workload of EAI patterns among team members. There after we have to understand each and every EAI pattern and find out a suitable plan to implement that pattern using WSO2 ESB. Then I had to configure ESB in a suitable manner and test the scenario for expected output. Thereafter I had to document those things in the wiki. Page | 34
  • 43. 2.9.1 Patterns In the next topics of this document EAI patterns I implemented are briefly described. Through implementing EAI patterns I was able to go through different areas in WSO2 ESB, where I was not able to touch during my individual project or test automation. Some of those were Scheduled Tasks, Message Formatters, Message Builders, JMS Transports, VFS Transports etc. 2.9.1.1 Implementing Test Message EAI Pattern The aim of implementing this pattern was to enable WSO2 ESB to automatically check out readiness of the back-end service periodically and inform the relevant parties. For this case I had to find mechanism to generate messages automatically and inject them in to normal message flow without interrupting the general flow. For this purpose I have to learn Scheduled Tasks in WSO2 ESB, which was new to me. From that user can either add a time period to inject messages or set a corn expression a particular date and time the message should be sent. Thereafter user can set the required payload in to it, so that the scheduled message is sent at the given time to main sequence. Then the reply message is checked at Validation component to identify the availability of the back-end service. So the design of this implementation can be shown as follows. Figure 2.6 Test Message Component Diagram For this case user has to add the following configuration to ESB and send messages using an Axis2 client to already running Axis2 Server. <definitions xmlns="http://ws.apache.org/ns/synapse"> <!-- Proxy for normal message flow --> <proxy name="ServiceProxy" transports="https http" startOnLoad="true" trace="disable"> <target inSequence="sendSeq"/> Page | 35
  • 44. </proxy> <!-- Normal flow of the messages --> <sequence name="sendSeq"> <send receive="receiveSeq"> <endpoint> <address uri="http://localhost:9000/services/SimpleStockQuoteService"/> </endpoint> </send> </sequence> <!-- Fault sequence handles failures --> <sequence name="fault"> <log level="full"> <property name="MESSAGE" value="Executing default 'fault' sequence"/> <property xmlns:ns="http://org.apache.synapse/xsd" name="ERROR_CODE" expression="get-property('ERROR_CODE')"/> <property xmlns:ns="http://org.apache.synapse/xsd" name="ERROR_MESSAGE" expression="get-property('ERROR_MESSAGE')"/> </log> <!-- Filter the failed Test Messages --> <filter xmlns:ns="http://org.apache.synapse/xsd" xmlns:m0="http://services.samples" source="//m0:getQuote/m0:request/m0:symbol" regex="TEST"> <then> <log> <property name="FAILURE" value="*** Test Message Failed ***"/> <property name="FAILED SERVICE" value="*** localhost:9000/services/SimpleStockQuoteService ***"/> </log> </then> <else/> Page | 36
  • 45. </filter> <drop/> </sequence> <!-- Receiving messages from service --> <sequence name="receiveSeq"> <log/> <!-- Filter the Test Messages --> <filter xmlns:ax21="http://services.samples/xsd" xmlns:ns="http://org.apache.synapse/xsd" source="//ax21:symbol" regex="TEST"> <then> <log> <property name="TEST PASSED" value="*** Test Message Passed ***"/> <property name="TESTED SERVICE" value="*** localhost:9000/services/SimpleStockQuoteService ***"/> </log> <drop/> </then> <else> <send/> </else> </filter> </sequence> <!-- main sequence used as the test Message injector --> <sequence name="main"> <in> <sequence key="sendSeq"/> </in> <out> <send/> </out> </sequence> Page | 37
  • 46. <!-- Task Scheduler act as Test data generator --> <task name="Testing" class="org.apache.synapse.startup.tasks.MessageInjector" group="synapse.simple.quartz"> <!-- Interval between generating test messages, Cron Expression are also allowed to use --> <trigger interval="25"/> <property xmlns:task="http://www.wso2.org/products/wso2commons/tasks" name="message"> <m0:getQuote xmlns:m0="http://services.samples"> <m0:request> <m0:symbol>TEST</m0:symbol> </m0:request> </m0:getQuote> </property> <property xmlns:task="http://www.wso2.org/products/wso2commons/tasks" name="soapAction" value="urn:getQuote"/> <property xmlns:task="http://www.wso2.org/products/wso2commons/tasks" name="to" value="http://localhost:9000/services/SimpleStockQuoteService"/> </task> </definitions> 2.9.1.2 Implementing Idempotent Receiver EAI Pattern The objective of this pattern was to implement a scenario that identifies the duplicates of same messages. This could occur because some client’s application tends to resend the same message if they didn’t get the reply with in timeouts. So that could make the backend services activation several times, since back-end service just do what is asking by message. In order to handle such situations an ESB should exhibit Idempotent Receiver pattern, so duplicate messages are rejected or stored in a message store until them get removed. In order to implement such scenario, I figured out no way with the help of current released WSO2 ESB, but also figured out that this EAI pattern can be implemented using the Page | 38
  • 47. Resequencing Message Processor which I have implemented and ready to attach with future releases. The design of ESB configuration can be shown as below. Figure 2.7 Idempotent Receiver Pattern Design According to the Fig. 2.7, first I put all messages in to a store and retrieve by sequence number using Resequencing Processor. So Resequencing Processor makes sure that no duplicate messages will be sending for further message mediation. By that way WSO2 ESB also has the capability of exhibiting the Idempotent Receiver pattern. To do that user should add the following configuration to WSO2 ESB. <definitions xmlns="http://ws.apache.org/ns/synapse"> <proxy name="IdempotencyReceivingProxy"> <target> <inSequence> <log level="full"/> <!-- Store all messages in an in-memory message store --> <store messageStore="MyStore"/> </inSequence> <outSequence> <send/> </outSequence> </target> </proxy> <!-- Further mediation of messages are done in this sequence --> <sequence name="next_seq"> <send> <endpoint> Page | 39
  • 48. <address uri="http://localhost:9000/services/SimpleStockQuoteService"/> </endpoint> </send> </sequence> <messageStore name="MyStore"/> <!-- Resequencing Processor takes the next sequence number and hand over to "next_seq" and preserve Idempotency --> <messageProcessor class="org.apache.synapse.message.processors.resequence.ResequencingProcessor" name="ResequencingProcessor" messageStore="MyStore"> <parameter name="interval">2000</parameter> <!-- Takes the sequence number using Xpath --> <parameter name="seqNumXpath" xmlns:m0="http://services.samples" expression="substring- after(//m0:placeOrder/m0:order/m0:symbol,'-')"/> <parameter name="nextEsbSequence">next_seq</parameter> </messageProcessor> </definitions> 2.9.1.3 Implementing Normalizer EAI Pattern Normalizer EAI pattern is about translating message formats. As an enterprise middleware application ESB receives different types of message formats which are generated by client applications. So as a good middleware product, an ESB should support most of those which are commonly in use. Other than configuring language, this EAI pattern influences the underlying transport configurations of WSO2 ESB. In transport level there are number of transport builders and formatters which enables the support of different message translation in bi-directional manner. In the designing such scenario, underlying implementation helps ESB to identify the message format and translate in to a common format use in WSO2 ESB. Currently SOAP 1.2 Message format is use as the intermediate message format. When message pass to endpoint it is also important to mention the message format that the service required. Rest of the mediation of message is carried out in the same manner as previous. Page | 40
  • 49. To show that behavior in WSO2 ESB I have designed the ESB components in the following manner. Figure 2.8 Normalizer Pattern Design Diagram For the design shown in Fig. 2.8, user needs to configure proxy and respective transformations as shown bellow. Some of the transformations are handled by underlying implementation and some need to specify the transformation. <definitions xmlns="http://ws.apache.org/ns/synapse"> <!-- The proxy service to receive all kinds of messages --> <proxy name="ServiceProxy" transports="https http" startOnLoad="true" trace="disable"> <description/> <target> <inSequence> <log level="full"/> <!-- Filters incoming JSON messages --> <filter xmlns:m0="http://services.samples" xpath="//m0:getQuote/m0:request/m0:symbol"> <then> <sequence key="sendSeq"/> </then> <else> <sequence key="jsonInTransformSeq"/> </else> </filter> </inSequence> <outSequence> <!-- Filters outgoing JSON messages --> <filter source="get-property('TRANSFORMATION')" regex="JSONtoSOAP"> Page | 41