• Save
Internship Report
Upcoming SlideShare
Loading in...5
×
 

Internship Report

on

  • 4,772 views

Industrial Training Period

Industrial Training Period

Statistics

Views

Total Views
4,772
Views on SlideShare
4,449
Embed Views
323

Actions

Likes
1
Downloads
1
Comments
0

3 Embeds 323

http://buddhimawijeweera.wordpress.com 304
https://buddhimawijeweera.wordpress.com 18
http://cloud.feedly.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Internship Report Internship Report Document Transcript

  • UNIVERSITY OF MORATUWA Faculty of Engineering Non-GPA Module 3992: Industrial Training TRAINING REPORTName : B. S. WijeweeraRegistration Number : 090587JField : Computer Science and EngineeringTraining Establishment : WSO2 Lanka (pvt) LtdTraining Period : 15.05.20121 -28.10.2012Date of Submission : 09.11.2012
  • PREFACEThis document contains the internship period I had from 15th May 2012 – 29th October 2012at WSO2 Lanka (pvt) Ltd as a trainee software engineer. This document contains three mainchapters that explain different aspects of experiences I got through internship period.Therefore this contains basic information about the training establishment and descriptiveinformation on the training I got and my opinions on the overall internship period consideringthe whole experience.The initial chapter is dedicated for the detailed information on the training establishment. It isdifficult to work comfortably without having a sound knowledge about the functionalities,procedures, hierarchy and structure of the company. Therefore meanwhile giving mymaximum contribution to the company I have to have a good understanding on the businessactivities, technologies, standards and strategies they follow.The second chapter is completely for expressing the experience I had during internshipperiod. This includes all the technical works I have covered, new technologies I have gonethrough, non-technical experiences and difficulties I had as well. This describes the projects Ihave covered which were given to me and how I overcome the obstacles I met. To explain theimplementation 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 implementationand JDBC Message Store implementation in the WSO2 Enterprise Service Bus along withthe concepts, tools and technologies which I got familiar with. The implementation designsand 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 onbuilding 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. Inaddition to that I have provided a personal a personal assessment on my experience from thebeginning to the end of training program along with suggestions to improve. Page | i
  • ACKNOWLEDGEMENTSOn my report about internship period, it’s my privilege to thank for all the people whocontributed to make this period a great experience for my life. If not for the commitment ofthem, from arranging training establish selections to the end of entire 24 weeks, it would notbe this much interesting.I should thank Dr. Chandana Gamage, the Head of Department, Computer Science andEngineering, University of Moratuwa for the effort taken to provide us with trainingestablishments. I should also grateful to Ms. Sachini Weerawardhana, the Industrial TrainingCoordinator for her dedication to make sure every student is getting a good trainingestablishment, organizing company presentations and providing necessary guidance inselecting 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 providingopportunity to have a great internship period and examining the quality of training. Also Ishould thankful to NAITA (National Apprentice and Industrial Training Authority) forproviding guidance for successful training experience from the beginning to the completionof internship period.I must thankful to Dr. Sanjiva Weerawarana, Founder, Chairman and CEO of WSO2 forproviding us this golden opportunity to work within a globally recognized company with afriendly environment. I should thankful to Mr.Waruna Ranasinghe, Senior Software Engineerand Mr. Thilina Mahesh, Senior Software Engineer who interviewed and recommended mefor the internship at WSO2. I should thankful to Mr. Samisa Abeysinghe, VP of Engineeringfor giving us the guidance on how to improve our knowledge and skills with the environmentprovided by WSO2 to build our career. I am thankful to Ms. Udeshika Ratnavira, SeniorManager, Administration and HR for her help given to solve issues I came up with andcoordination with the university. I should also thankful to Mr. Prabath Siriwardena, SeniorArchitect for appointing us to different products within the company. Also I should thankfulto Dr. Srinath Perera, Senior Software Architect for his friendly opinions and suggestions tomake my projects success.I am so much grateful to the ESB (Enterprise Service Bus) team members for all the supportgiven 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, associatedTech Lead and Mr. Miyuru Wanninayaka, senior software engineer for their mentorshipduring my period at WSO2. I should highly appreciate their clarifications done whenever Igot struck, although they have very busy schedules. I also should thankful to Mr. CharithWickramarachchi, a senior software engineer who was left for his PhD during my internshipperiod, guided me a lot even after left the WSO2, to complete Resequencing MessageProcessor project. I am also thankful to other members in ESB team, Mr. DushanAbeyruwan, a senior software engineer, Mr. Isuru Udana, a software engineer and Ms.Charitha Madurangi, a software engineer for the friendly environment provided. Even thoughoutside the team I assigned I should thankful to Mr. Shammi Jayasinghe, a senior softwareengineer and Mr. Hasitha Abeykoon, a software engineer, for their help since I have closelyworked with their product too.I should also thankful to Mr. Dharshana Warusawithana, a software engineer and Mr. NuwanWimalasekara, 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 automatedtests.I am thankful to each and every technical and non-technical member in WSO2 family for thefriendly environment provided and help me as soon as whenever I need. Because of that I didnot have to bother about asking for technical and non-technical help.Finally, thank you very much everyone for making my internship period such a remarkableexperience for my life. Page | iii
  • TABLE OF CONTENTS1. 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 ......................................................................................... 182. 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 .............................................................................................. 453. Conclusion ....................................................................................................................... 46 3.1 Importance of Industrial Training ............................................................................. 46 3.2 Satisfaction on training establishment....................................................................... 46 3.3 Industrial Training Program ...................................................................................... 47ANNEX.................................................................................................................................. viiiREFERENCES ......................................................................................................................... xiABBREVIATIONS .................................................................................................................xii Page | vi
  • LIST OF FIGURESFigure 1.1 WSO2 Company Logo ............................................................................................. 1Figure 1.2 Employee Hierarchy ................................................................................................. 9Figure 2.1 Resequencing EAI Pattern...................................................................................... 24Figure 2.2 Resequencing Processor Design ............................................................................. 24Figure 2.3 Selecting Starting Sequence Number ..................................................................... 27Figure 2.4 Construction of Persisting Message ....................................................................... 31Figure 2.5 Architectural Diagram of JDBC Store ................................................................... 34Figure 2.6 Test Message Component Diagram....................................................................... 35Figure 2.7 Idempotent Receiver Pattern Design ...................................................................... 39Figure 2.8 Normalizer Pattern Design Diagram ...................................................................... 41 Page | vii
  • 1. Introduction to the Training Establishment 1.1 WSO2 Figure 1.1 WSO2 Company LogoThe name WSO2 stands for Web Services Oxygen, since the company is truly inspired withWeb Services and finding enterprise solutions in the web space. The company wasestablished in 2005 by pioneers in XML (Extensible Markup Language) and Web Servicetechnologies following open source standards. WSO2 offers a complete 100% free and opensource SOA (Service Oriented Architecture) platform with cloud approach through WSO2Stratos, 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 thebased on the free and open source Apache software stack. Therefore all the products arereleased under the Apache Software License. WSO2 has a team of locally and globallyrecognized software engineers who are really passionate with open source developments andenjoy their dedication to the industry. Most of the software engineers work there arecommitters of globally accepted software projects like Synapse, Axis2, Rampart, Sandesha,Transport, Commons, Cassandra of Apache Foundation and other software communitiesincluding 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 companyencourages employees to come up with their own innovations to improve the framework andbuild their own personal brand through those.WSO2 is currently offering 12 products as web based solutions that have perfectly designedfor a business solution. All WSO2 products can be tuned in to different customerenvironments by adding or dropping its features. For an example WSO2 ESB can be used forfast online transactions with dropping extra components which are not required or as atransport switcher by adding new features. StratosLive is an invention by WSO2 whichprovides all the products 100% free in the cloud environment. Page | 1
  • Producing 100% free and open source products WSO2 has made a sustainable business. Thebusiness strategy at WSO2 is providing training, support, development and consultancy fortheir products to the interested customers. Since all the products are freely available, anyonecan download them and play with it. If the customers satisfy with the product and willing totake WSO2 support and training to bring up a business solution for them, then they arecharged for that service. The company also maintains a portal called “WSO2 Oxygen Tank”which contains a knowledge base, articles, slideshows, webinars, tutorials and screencastswhich create a valuable free online resource for any SOA developer who interested in WSO2products and technologies used by WSO2 products.Other than having connections with Apache Foundation, WSO2 has established manyconnections 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 FoundationWSO2 has offices in USA, UK and Sri Lanka with a worldwide customer base with differentindustries. The office at UK is mainly aimed for marketing and building up customerrelations. USA office at Palo Alto is currently at growing stages and will soon startcontributing to the development of products. The Sri Lankan branch act as the main researchand 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, Colombo03.Even though having just 7 years of experience in industry, WSO2 developments have createdproducts that can challenge the industrial giants which have been for many years. SomeWSO2 customers have admired with the performance and light-weight solutions that WSO2came up compared to IBM, Oracle and Microsoft. WSO2 has stated as a top open sourceSOA companies with a small team size. It’s proud to say that WSO2 has been able tohighlight 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 softwareindustry. 1.2 History of WSO2WSO2 has declared its birthday as 04th of August 2005 because lots of important thingshappened around that day including incorporation of USA company, incorporation of SriLankan company, incorporation of UK company and finalizing funding. At first the companycame up with the name “Serendib Systems” and later changed to WSO2 because of a requestfrom an investor [2].After having the initial investments the company stated its developments step by steps with agroup of talented, skillful people to bring the core carbon framework in to reality. Because ofthe sacrifices they did to overcome hard times finally WSO2 raised in the middlewareindustry 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 whoare having similar kind of products. 1.3 Vision of WSO2WSO2 always maintains a clear vision on future improvements regarding products,customers, employees and growth of technologies. Vision of WSO2 is created with thecollaboration of following four main catagories. 1.3.1 Reinvent the TechnologyWhen WSO2 was establishing, there were giants in industry like Oracle, IBM. But WSO2believed that they can re-invent the technology so that in-order to achieve the benefits thatcurrent 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 ofthe most advanced middleware platform. To avoid from foreseeable pitfalls, the platform wasdesigned to defend issues and increase the performance. By adopting OSGi (Open ServicesGateway initiative) framework, components of framework enables lean, high performanceapproach with self-consistency across the platform and provide pluggable behavior. Fromthat approach user will get the opportunity to use the component what he requires and comeup with a solution for his needs. Beyond being able to customize the products, WSO2 givesopportunity 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 thatmanner WSO2 is playing a key role in cloud computing, which is an emerging field incomputing. 1.3.2 Reinvent the Business RelationshipAlthough being at the leading edge of technologies, WSO2 has identified the quality ofbusiness relationship with customers as the core value. Because of that WSO2 has takennecessary steps of being a customer oriented company. All the software are 100% free andopen source and built under a fully open and transparent development process at wso2.orgmailing lists and at mailing lists in the Apache Software Foundation. So there is no licensefees, registrations, limited downloads or trial expiration period as all the products are releasedunder Apache License 2.0 which means there are no restrictions on using or developingproducts. There are no special types of license like Community license or Evaluation licenseand 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 customizingproducts to meet the maximum efficiency that the customer requires. Through highest qualitytraining, support, consulting services, 24x7x365 production support or a complete solutionwill give required unique solution for each customer. 1.3.3 Reinvent the Support ModelFor a successful business it is not just enough to have a good marketing section, but it isessential to have a very good customer support service which can understand theresponsibility of running the system. Beyond conventional supporting systems, WSO2 usesonline support system, which allows users can direct the issues to the best source of expertiseincluding 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 worlddirectly. WSO2 does not uses special people called “Support Engineers” but uses engineerswho contribute to development as they know every nook and corner of the product, and cangive 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 serviceswith 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 oninvestment as well. WSO2 believe that the successful customers are the best way to make thecompany a successful one among rest of the companies in global middleware market. 1.3.4 Create a Great Place to WorkDevelopments of WSO2 are mainly going in Sri Lanka. Other than reinventing thetechnology, business relationships, and support model WSO2 brought Silicon Valley-styleentrepreneurialism 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 localinnovators. Because of that WSO2 widens the opportunity of being a contributor of ApacheFoundation, which is a well-known foundation for open source developments.WSO2 encourage employees without any hesitation to develop personal developments andeven to leave the company for doctoral studies abroad. After studies employees are encouragejoining WSO2, to lay foundation to new companies, or to find an employment in otherorganizations where they can apply their talent to make Sri Lanka and the whole world abetter place.The vision of WSO2 is not based on monetary values but in gaining sustainable benefits toemployees, the company and to Sri Lanka, which is truly admiring. And I believe WSO2 willbe able to get the real values of Sri Lankan brains to do innovative things in open sourceworld and will become a hotbed for local innovators. 1.4 WSO2 Business ModelWSO2 offers a 100% FOSS (Free and Open Source) products, which can be downloaded atfree-of-charge by any person and can make changes. Thereafter they can use famous buildingtools like Maven to build customized version of that product. This process makes customer totry on WSO2 products before they bring it in to the business which is completely differ fromthe giants in the industry like IBM or Oracle, where the customer has to pay even beforegetting the product.Through an enterprise system customers expect a great performance, low risk, good qualityand 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 theproduct stack will bring the revenue for WSO2. In addition to that some client projects arealso 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 ModelCategories of support offering can be list down as follows. • Community Support • Evaluation Support • Training • Development Support • On sight trainings • Off sight trainings • Production SupportThere are also Quick Start and Cloud Start supporting services which are designed to bringcustomers more familiar with WSO2 products. 1.5.1 Community SupportThrough online websites like Stackoverflow, WSO2 allows users to post questions and allowthen to be public. Once a question has the tag WSO2, WSO2 puts full effort to solve thoseissues, believing that answering would benefit the whole community interest in WSO2products. 1.5.2 Evaluation SupportThis service is designed to help customers in selecting technologies, strategies in early stagesin middleware projects. For qualified customers some of the services are offered free ofcharge in this module. In this support WSO2 offers support with Middleware architectureconsulting, Developing Requests For Information/Proposal (RFI/RFP), and Proof of Conceptimplementations. Page | 6
  • 1.5.3 Development SupportThis support connects customers directly with customers to during critical developmentstages. This dramatically reduced the time between development and production. In hereWSO2 help migrate, integrate, optimize, and manage your enterprise middlewaredeployments by efficiently getting direct access to master brains in products that customerconsume. Following can be mention as the key benefits that customer gets through thissupporting 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 recognizeengineers in the world. 1.5.4 Production SupportProduction support is to secure mission critical applications are available 24x7x365. Bringingthis kind of support customers is satisfied with the quality of service by WSO2. In addition tothat customers who take Production Support will be eligible to have the latest featureupgrades, product patches and service packs. In this supporting system customers have theopportunity of determine the severity level of errors, according to guidelines in Annex as A2. 1.5.5 Quick Start SupportThis program as it name says, is helping customers to get start with WSO2 product with inconsiderably lesser amount of time. This will bring world class engineers on-site to workcollaboratively with customer’s team. Through this WSO2 will be able to clarify the actualcustomer need and provide necessary guidance through middleware platform. Additionallythis will help users to fine tune the WSO2 products that matches for their environment andrequirements. 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 PackagesBeyond list of 12 products on top of Carbon platform, WSO2 offers a set of turnkey solutionpackages, with twenty four hour support and enterprise-level maintenance on the entire clientsystem, installing monitoring and maintenance. Those products are addressing customers’enterprise integration problems, security and identity problems, governance problems, andmore, 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 FactoryAll the products above are based on award winning Carbon platform, so that it can becustomized as components according to customers’ wishes and provide optimize solution fortheir investment. 1.6 Organizational StructureThe company consists of very flat and informal structure. Within the company every oneconsidered as equally no matter how much mature each one is or how old each one. Thissystem creates team spirit among employees and creates opportunity to talk with anyonedirectly. 1.6.1 Employee HierarchyFor the purpose of HRM (Human Resource Management) tasks manageable followinghierarchical structure applies. But in decision making, even an intern can take part ifconsiderable amount of reasons in hand. So that makes the agile process of softwaredevelopment more efficient and practical because employees will get the opportunity ofapplying 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 IdeasWSO2 believes that using transparent mail lists is the best way to fix any issue very fast. Thistransparency allows anyone who has knowledge to reply immediately to the requester andproduce maximum output and lower the confusions. WSO2 mail lists not only for thetechnical 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 mostlyThrough this mailing list anyone in the company will have the opportunity to discuss withothers about the issues, difficulties facing. There is no need to follow the hierarchy to solveissues. Even interns can directly meet Dr. Srinath Perera or Dr. Sanjiva Weerawarna if theyhave to make complicated decisions among development. 1.7 WSO2 TeamThe secret of conquering the middleware platform this much fast is the WSO2 Team, whichconsists of the best people for each field. Following is the current team of employeescontributing their full commitment to the company.Leadership – WSO2 is leaded by very experienced and people across the globe that guidesthe 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 companythrough 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 BankProduct Teams -The engineering team –The engineers who work on the development, research, design andtesting work fit into this category. Again divided according to the technology groups and subdivided depending on the product they work on as ESB team, Greg team, Identity Serverteam, Gadget Server team etc. Following list shows each TG (Technical Group) with the listof products they have.Development TG Application Server Tooling Gadget ServerSolution TG App Factory API ManagerData 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 BalancerFoundation TG Carbon StratosThe sales team – Deals with the customers and liaise between the customers and thedevelopers.The marketing team – Works on marketing WSO2 products by means of sponsorships,advertisement campaigns, workshops, and webinars so on. Most of the events are organizedwith the guidance of marketing team having the whole WSO2 team support.The finance team – Takes care of the accounts, income, and expenditure of the companyThe administration team – Provides vital administration and human resource work handlingsalary payments, foreign visit arrangements etc... 1.8 WSO2 Products and ServicesAll the WSO2 products and services are based on enterprise middleware called WSO2Carbon which is available as downloadable form or as a Java PaaS – WSO2 Stratos. Aimingmajor business issues already exists WSO2 introduce a set of 12 products which areconfigurable according to user requirement. A high level view of categorizing WSO2products attached with annex, A3. Following are brief description on all 12 products andservices 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 componentdiagram of WSO2 ESB. WSO2 ESB is a completely Java based middleware component thatencapsulates the services from clients and vice versa. To do such a great work by consuminglesser amount of memory space, this product is supporting most of the current world messagetransporting technologies and messaging formats. Key features of WSO2 ESB can becategorized 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 TransformESB can be configured messages to be route according to Header based, Contentbased, Rule-based and Priority-based algorithms. It is also support message mediationby exhibiting almost all the EAI (Enterprise Application Integration) patterns.ESBalso supports logging, event publishing and database accessing, API accessingfunctionalities along with XSLT, XPath, XQuery, and Smooks transformations.Message, Service, API and Security GatewayESB exposes its interface to exchange messages in different forms and providefacilities to use software patterns including message decoupling, load balancing, fail-over endpoints, exposing RESTful APIs, enforcing standards, policy management viaGovernance Registry, Secure messaging with WS-Security, LDAP, OpenID, SAML,XACML and many more.High Performance, High Availability, Scalability and StabilityWSO2 ESB is designed to support 1000s of concurrent non-blocking HTTPconnections per server and a customer like eBay has the experience of using this ESBin such critical situations. This product guarantees that execution stability with lowresources utilization during long time runs.Lightweight, Developer Friendly and Easy to DeployMore than setting configuration through coding WSO2 ESB gives flexible UI to setupthe configuration user want along with mediations and error handling facilities. ThisESB also can be made available to a company as a private cloud by allowing tenantusers to access or as a public cloud with the help of WSO2 Stratos. Consideringflexibility, WSO2 ESB allows customers to make their own mediators with theirfavorite language Java, Javascript, Groovy or Ruby and plug using class mediator. Forany parties who are interested in developing this product can easily check out thesource code and re-build custom version of the products using famous building toolsMaven and Ant.Manage and monitorThrough web console with web security, customer can access to the statistics page ofWSO2 ESB to see the performance of it. This can also be integrated with BusinessActivity Monitors to take decisions in business activities. ESB also consists offlexible logging support with integration to the enterprise level logging systems. Alsocustomers of this ESB have the luxury of using JMX MBeans for monitoring andmanagement. Page | 14
  • 1.9 Performance of WSO2Immerging in middleware industry within 7 years is the best fact to show the performance ofWSO2 other than anything else. Being a company with master minds in Sri Lanka, companyhas lots of lands marks [2] and it is guarantee that the company will have good achievementsin future too. In addition to hear successful stories from customers WSO2 has won followinghighly 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 StrengthsCarbon platform – Carbon platform is the backbone of every product in WSO2. It providesa complete middleware platform to make components on top of that. This innovative productprovides user a componentized framework which the user can just use the components theywant and pay for the service they use. This flexibility gave the chance to WSO2 to present thefirst 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. Thearchitecture of carbon platform is carefully designed to meet the challenges that could occurdue 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 workingenvironment employees’ dedication towards the company has increased. They are also havingthe luxury of working from home also. Someone may wonder how such culture can improvethe productivity of a company, but that system actually worked well in WSO2 because ofemployees’ heart feel to contribute to the company.Dedicated team with talents – Other than the infrastructure and facilities provided by thecompany, this is the main strength of WSO2. The engineering team of WSO2 consists ofincomparable, world-class architects and developers having experience and contributions atglobal industry. Since they come from university background they have a smarter way ofthinking compared to coders who have just dealt with programming stuffs. WSO2 havingcommitters for all the products it gets from ASF to get the benefit of using it. In addition tothat new comers coming from different backgrounds and fields share their experience and usetheir experience in every way they can to add more value to the company. Not only justdevelopments, even engineers share their implementations and knowledge through writingblogs and tweeting.Open Source Company – By exposing the source code to the world everyone can have alook and try on those codes and identifies weaknesses and even if they interested they havethe opportunity of fixing those. So this creates a large committee for helping WSO2 productsoutside the WSO2 to help, so customers do not have to take WSO2 products. 1.9.2 WeaknessesWSO2 provides a good environment and unforgettable period to the entire team. But thereare few areas to be improved. Currently WSO2 working in three offices in Sri Lanka. Eventhough mailing lists and instant messaging services keep all employees close, in somesituation it is not enough. So employees need to travel from one place to another is a kind ofwasting 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 consultan employee from another product. Page | 16
  • Another drawback is less documentation to get familiar with technologies used in WSO2products. This has been a big issue for all new team members to get the right idea on aproduct. If there was a good set of documents for new comers, it would be much easy tocatch-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 canimprove this resource I’m sure that new comers to WSO2 and rest of WSO2 fans will get thebenefit of it. 1.9.3 OpportunitiesBeing closely working with local universities WSO2 gets the full benefit of having bestbrains in the country for development process. In addition to that working closely with ASFWSO2 has the golden opportunity of having the support for their base product from all overthe world. In Sri Lanka still there is no company that follows the methodology of gettingrevenue through support system and would be more attractive way of having customers.Owning a componentized carbon platform, WSO2 has the opportunity of creating newsolutions for many problems may arise in the world. 1.9.4 ThreatsIn middleware industry WSO2 does not have local competitors, but it has to compete withindustrial 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 overproducts by those companies. In addition to that developments of WSO2 is not aiming localmachines but also for cloud infrastructure too, would be need to take more complex approachin development stages. 1.10 Service to Sri Lankan SocietyWSO2 was able to create new era for Sri Lankan software industry. In contrast to traditionalsoftware companies that act as branches of foreign software companies, WSO2 is formed as aSri Lankan software company lead by Dr. Sanjiva Weerawarna, the former and the CEO ofWSO2. In collaboration with ASF, gives more opportunity to Sri Lankan to contribute toworld class projects and get the return back to WSO2.WSO2 encourages its employees to do further studies outside Sri Lanka and createopportunities 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 thebenefits of those people to development of the company and in return providing a goodenvironment to work with and knowledge on cutting edge technologies.Many WSO2 professionals provide mentoring to final year projects carried out by final yearstudents and provide internships to students in Sri Lankan universities. From thatundergraduates get exposed to new technologies that have a potential to change the world innear future.WSO2 has an annual event WSO2-Con to bring expertise in the world to Sri Lanka andprovide opportunity for Sri Lankan professionals to meet them and provide opportunity toexchange technical and non-technical experiences, and Sri Lankan culture. This kind ofcontribution to the country shows the signs of being middleware industry a key role in SriLankan economy near future. 1.11 Suggestions to improveI have already mentioned few areas that WSO2 needs to work on to improve. First one was tobring all offices in Sri Lanka in to a single place in order to empower the developmentscarried 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 customersupport it would be more efficient if WSO2 can have a good developing team at Palo Altooffice to access customers quickly compared to current method of visiting Sri Lankandevelopment team abroad.Lack of documentation on products is also a problem for new comer to a product. If therewere 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, keepingthe articles up-to-date is also very important, since some features are left after certainreleases.Within last 7 years of time WSO2 has done a lot in middleware industry. Because of thatWSO2 holds a major role in Sri Lankan software industry. But the brand WSO2 is notpopular among the general public and they are not aware about the world-class products thatWSO2 has innovated with the help of Sri Lankan brains. If it is possible to make the brandamong Sri Lankan general public, it would be more beneficial for the company. Page | 18
  • 2. Training Experience 2.1 Stepping in to WSO2 TeamOn 15th of May 2012 is the unforgettable day of all twenty three interns who are selected forWSO2. 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 tointroduce WSO2 culture. She mainly focused on adapting to the flat structure of thecompany, 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 usto System Engineers to resolve if there are any issues with our contact details or emailaddress. On the same day we were group according different TGs and expect to go and meetteam 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 whoselected for Integration TG left the main office and went to office at Colombo 03. For firstfew 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 tothe laptops given to us. Then we went through products of WSO2 to get the basic knowledgewe need. Meanwhile we share what we found through mails with the interns working in otheroffices. In addition to get the knowledge on WSO2 products we started getting to know aboutother technologies like SVN, Maven, Ant which we thought to be useful. Getting familiarwith 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 Ihave to work with ESB team which works for developing the product WSO2 EnterpriseService Bus. Mr. Kasun Indrasiri and Mr. Miyuru Wanninayaka were appointed to mentoringme during internship period. My first task was to check out Carbon Platform from the onlineSVN repository and build using Maven. That took couple of days since there were buildfailures 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 WSO2ESB product to gain more detail knowledge on those. 2.2 InductionFirst day induction program was conducted by Ms. Udeshika Rathnavira, Senior Manager,Administration and HR with Ms. Hasmin Abdulcader, Director Marketing for twenty three ofus. It was a friendly discussion which resolves our doubts and introduced WSO2 culture tous. They explained how flat hierarchy is maintained within the company and how eachmember is treated equally. They emphasized that we should talk to each other with their firstnames, even for the CEO of the company. In addition to that they briefly explained us aboutthe history of WSO2, the business model used in WSO2, and facts that we should notexposed to external parties.During teatime in WSO2 every member supposed to come to dining area in each office andhave snacks and tea. They also mentioned that is very important to share each onesexperience with others during tea time. Other than tea time anyone can come to dining area tohave 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 werealized 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 deadlinesfor our work load, but if we do more we can get more knowledge. Permanent employeesworking in WSO2 has the option of working from home, but interns will not get that chancesince it violates the objectives of internship and it is impossible to do that since surely we willneed the help of team we are working with. 2.3 Development EnvironmentUbuntu – 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 softwareincluding java installation were done using command line, Synaptic Package Manager,Gnome interface and got familiar with setting up environment variables on .bashrc file thatwas so different from Windows. But finally I was able to customize as I wish with the help ofteam members. Page | 20
  • IntelliJ IDEA IDE – I was familiar with using NetBeans and Eclipse at university, but as lotof developers at WSO2 was using IntelliJ IDEA as their IDE tried to use that. The key-boardcentric 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 thebeginning only thing I did was checking out codes from WSO2 repo and later, we were givenseparate 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 thecode 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 bugsthis is a great tool to use.TestNG – This is the framework used by WSO2 to write automated test. There were severalrules and annotations we should obey while writing a correct test. After writing a test on thatframework 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 describesthe 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 Maventake the load of the developer to download them and fix with the project. Instead itdynamically 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 fromthe Maven2 Central Repository and other Maven repositories.TcpMon – This is a very much useful debug tool that allows viewing messages andresending them. It can be set to a listening port in TcpMon and it shows messages that cometo the port and continue the message without any change. It was great tool which helped meto 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 opensource cross-platform functional testing solution. I have become familiar with this tool intesting Resequencing Message Processor, because SOAP UI was the best choice to producecustom messages for a particular web service. Page | 21
  • Surefire Reports – These are kind of reports generated after building WSO2 repositoryusing 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 ServicesWSO2 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 thatpurpose I was given time to go through articles published by ASF and have a goodunderstanding of how Axis2engine works. Within that period of time I realized howmessages pass through this engine, what are the handlers use, how handlers work together todo message processing, modules use in engine and how they interact with each other. Afundamental architecture of Apache Axis2 engine is shown in Annex, A4. This engineactually covers the most fundamentals of all WSO2 products that we should know. Inaddition 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 AXIOMs OMElement • Generating the service using Axis2 Databinding Framework (ADB) • Generating the service using XMLBeansI have also created clients for each service for testing. Through those works I was able to layfoundation on Messaging Exchanging Patterns (MEP) which is used in later works. Twomajor 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 understandingon these stuffs is very important since ESB works completely on the concept of messaging tointeract clients and services. Page | 22
  • 2.5 Trying out WSO2 ESBIn theoretically I have heard about ESBs through lectures but I haven’t got a chance of usingESB. As an intern first I was given opportunity to try out samples [6] provided with ESB andlearn about the capabilities that WSO2 ESB exhibit as a middleware. Following are some ofthose, • 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 formatsAfter understanding those basic things I have to go through set of documents related toMessage Store and Forwarding Pattern in WSO2 ESB. In those scenarios different types ofMessage Stores and Message Processors are used. Referring in to more details I becomeaware of the parameters they need to configure those to suite our needs and limitations ofeach implementation. 2.6 Resequencing Message ProcessorAfter having a basic understanding about background knowledge, Tech Lead of the teamgave me a project to implement a Message Resequencing Processor. It is to be a new messageprocessor which can send messages to a given sequence in an ordered manner. For thatproject I had to work closely with Message Broker team member Mr. CharithWickramarachchi, 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 someimportant stuff related to those. Thereafter I closely worked with him in taking designdecisions related to the implementation. To have initial implementation he introduced me toSynapse platform, Synapse dev. list and helped me to checkout from Synapse trunk. Thereafter he let me to identify the correct place to do the implementation and guided me in doingimplementation. Page | 23
  • 2.6.1 IntroductionApache Synapse is a lightweight, high performing Enterprise Service Bus (ESB) thatprovides an exceptional support for XML, Web services and REST with the help of fast andasynchronous mediation engine. With this improvement Apache Synapse will get thecapability of re-sequencing the messages which goes through it according to a givensequence number. In this article Im going to explain on how to configure the reseqencer andhow it behaves. 2.6.2 Resequencer Figure 2.1 Resequencing EAI PatternWithin Synapse the messages may take different routes due to routers, filters etc. Due to thecharacteristics of each route the time to process the message will vary. Thus the end resultswill not the same as the beginning. Some messages may arrive earlier than others. So this canbe disadvantageous in a situation that order of delivering message matters. In order toovercome this issue, resequencing EAI pattern is introduced with a stateful processor calledResequencing Processor. 2.6.3 ArchitectureImplementing Resequencer can be done using by adding a message store and a resequencingmessage 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 processorcapability of the Synapse which are already presence. A message store is used to keep themessages that should be sent by the Resequencer in an ordered manner. The ResequencingProcessor should be pointed to that store in order to retrieve and look the messages availablein the store. All the messages that should be sent in a sequence must have a sequence numberin a certain location of a message which can be accessible. 2.6.4 Resequencing ProcessorThis Resequencing is completely responsible for re-ordering messages in a given messagestore. It can recognize the initial sequence number from the messages already in the store andinject messages to a given sequence in a given rate [10].Implementation of the Resequencing Processor is done using the Scheduled MessageProcessor which is an abstract and gives the capability to implement a processor withscheduled tasks. So inherently the Resequencing Processor uses the Quartz Scheduler as aninfrastructure. Other than the facilities inherited from Scheduling Message Processor,Resequencing Processor possess capabilities of deciding initial sequence number accordingto 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 toextract the message which contains required sequence number. Once the message containingrequired sequence number is found, message is directed to the given sequence for furthermediation and required sequence number get increased by one. For searching required Page | 25
  • message Resequencing Processor currently uses linear search through the messages in themessage store. When a message is selected as the required message it should be removedfrom the message store, therefore it is important to use a message store which supportsrandom removal of messages.If the user wants to connect to external message store, you just need to configure Storemediator according to that. Resequencing Processor does not required to change. It is veryimportant to select the right type of message store for the purpose, since the ResequencingProcessor will not remove messages from the store until it finds the message with requiredsequence number. 2.6.5 Selecting initial sequence numberResequencing 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 asfollows. Figure 2.3 Selecting Starting Sequence NumberIn the diagram N notates the number of messages that the Resequencing Processor expectsafter starting without having initial sequence number. P notates the number of attempts thatprocessor should made to check whether that required number of required messages areavailable in the store. The value of the Delay remains constant since user can configure Pvalue as they want. 2.6.6 Resequencing Processor ConfigurationConfiguration 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 theResequencing 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 beforwarded next and it is essentially needed. "seqNumXpath" parameter is also an essentialparameter 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 tosay that the Message Processor Serializer and Message Processor Factory should be modifiedin order to use "seqNumXpath", hence Resequencing Processor too."requiredInitMessages" and "requiredInitMessagesDelay" are for the N and P values in flowchart 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 MessageProcessor can be used here. 2.6.7 Additional Modifications MadeResequencing Processor needs to use Xpath expressions to extract the sequence number frommessage context. For that purpose it is required to use a different type of parameter. CurrentlySynapse supports name-value type parameters only. Page | 28
  • So I changed the Message Processor Factory and Message Processor Serializer in order totake 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 parametersinside Message Processor. 2.7 Test AutomationDuring the middle of the internship period we had come across a very busy schedule becauseof product releases. Mainly we were divided in to two groups to help in automating tests inWSO2 ESB and WSO2 Greg. I was selected into WSO2 ESB test automation team. Duringinitial days we had training sessions on the test automation framework Clarity, TestNG, andSOAP UI which was very useful in writing tests. For the coordination of ESB test automatingteam 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 weare sub-grouped to each category of mediators in ESB and in the second phase we had toautomate 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 ofESB and create relevant test to exhibit that they are functioning wellConditional Router Mediator tests [8] – Through this test automation I have to go throughdifferent 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 testrelated to validation of a schema according to dynamic changes. Through that test I havelearnt about the validating a message body according to a schema specified. So it was a newand 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 lateradded 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 ofMessage Processor in the ESB configuration even after restarting the ESB.For this case I hadto 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 thebasic functionality of nhttp transport use in WSO2 ESB. Through this I have learnt onconfiguring 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 gettingmessages without content type from an external party. So in that scenario WSO2 ESB fails toidentify 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 Ihad to look and learn about Apache Commons Http Client libraries to produce suchmessages.All the group who were selected to ESB test automation worked on these kind of test forabout two months, and our effort make it easy for the ESB team to come up with good set oftests. 2.8 JDBC Message Store 2.8.1 IntroductionCurrently WSO2 ESB uses JMS queues as the persistent message stores which caused lots ofproblems and drawbacks in performance. In order to diminish those drawbacks and provide amore friendly way for data storing Mr. Miyuru Wanninayaka asked me to create JDBC storesupport for WSO2 ESB. As the initial steps I looked into the code level implementation ofalready existing JMS message store and come up with a solution. 2.8.2 ImplementationAfter having research on JMS stores I came up with the following structure to implementserializable messages from SOAP messages mediate inside WSO2 ESB. Figure 2.4 Construction of Persisting MessageThereafter one by one I began to do the implementation on JDBC store and finally I was ableto successfully test it with Sampling, Forwarding and Resequencing message processors. Ihave already committed my work to public Apache Synapse JIRA [11], so that in some day itwill get added to the Apache Synapse. Following are details about classes in JDBC store. Page | 31
  • JDBCMessageStore– Provides the fundamental interface to external parties byencapsulating the underlying implementations. This class exposes offer, poll, get, clear, polland other generic methods of messages stores to outside parties.JDBCMessageStoreConstants – This class defines the related constant values for JDBCmessage store. This class make it easy for maintain JDBC store implementation by gatheringall the constants in to a single place.JDBCUtil – This class was defined to provide necessary utility functionalities to JDBCoperations. Basically it deals with creating connections and terminating connections,querying database tables etc.JDBCPersistenceHelper – This class is to help with converting SOAP messages in toserializable Java objects and the reverse process after querying the required. This works as anadaptor between database and ESB.Those classes along with the classes mentioned previously, created a successful JDBCMessage Store. 2.8.3 Advantages over other message storesFrom the very beginning of the designing phase JDBC Message Store focused on eliminatingthe difficulties that faced when using JMS queues as message stores. So following list of aimsare 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 theoutcomes of JDBC message store has achieved more than expected at the initial stages. Page | 32
  • 2.8.4 Configuration of JDBC Message StoreTo use JDBC Message store customer has to add the required JDBC support. There afterfollowing configuration will allow any message processor to use JDBC message store assame 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 issupposed to use and other parameters like url, username and password which are specific tothe database. In addition to the above method this implementation can also be used withalready existing data sources. Page | 33
  • 2.8.5 Final architectureAfter implementing the project, the final top level view with in ESB environment can be seenas follows, Figure 2.5 Architectural Diagram of JDBC StoreAccording to the Fig. 2.5, JDBC Message store work as an intermediate party in betweenStore 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 ESBIn the latter part of the internship I have to join with the collaborative work on constructing awiki for WSO2 ESB. The sole purpose of the wiki was to show how WSO2 ESB can exhibitEAI patterns. EAI patterns are standard patterns that messaging systems like ESB shouldexhibit. If a messaging system can implement those patterns, it would be much easier forarchitects 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 peoplewho has the basic knowledge on messaging systems.Initially, there was a meeting among team members and distributed the workload of EAIpatterns among team members. There after we have to understand each and every EAI patternand find out a suitable plan to implement that pattern using WSO2 ESB. Then I had toconfigure ESB in a suitable manner and test the scenario for expected output. Thereafter I hadto document those things in the wiki. Page | 34
  • 2.9.1 PatternsIn 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 thosewere Scheduled Tasks, Message Formatters, Message Builders, JMS Transports, VFSTransports etc. 2.9.1.1 Implementing Test Message EAI PatternThe aim of implementing this pattern was to enable WSO2 ESB to automatically check outreadiness of the back-end service periodically and inform the relevant parties. For this case Ihad to find mechanism to generate messages automatically and inject them in to normalmessage flow without interrupting the general flow.For this purpose I have to learn Scheduled Tasks in WSO2 ESB, which was new to me. Fromthat user can either add a time period to inject messages or set a corn expression a particulardate and time the message should be sent. Thereafter user can set the required payload in toit, so that the scheduled message is sent at the given time to main sequence. Then the replymessage is checked at Validation component to identify the availability of the back-endservice. So the design of this implementation can be shown as follows. Figure 2.6 Test Message Component DiagramFor this case user has to add the following configuration to ESB and send messages using anAxis2 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 PatternThe objective of this pattern was to implement a scenario that identifies the duplicates ofsame messages. This could occur because some client’s application tends to resend the samemessage if they didn’t get the reply with in timeouts. So that could make the backend servicesactivation several times, since back-end service just do what is asking by message. In order tohandle such situations an ESB should exhibit Idempotent Receiver pattern, so duplicatemessages 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 releasedWSO2 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 futurereleases.The design of ESB configuration can be shown as below. Figure 2.7 Idempotent Receiver Pattern DesignAccording to the Fig. 2.7, first I put all messages in to a store and retrieve by sequencenumber using Resequencing Processor. So Resequencing Processor makes sure that noduplicate messages will be sending for further message mediation. By that way WSO2 ESBalso 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" andpreserve Idempotency --><messageProcessorclass="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 PatternNormalizer EAI pattern is about translating message formats. As an enterprise middlewareapplication ESB receives different types of message formats which are generated by clientapplications. So as a good middleware product, an ESB should support most of those whichare commonly in use. Other than configuring language, this EAI pattern influences theunderlying transport configurations of WSO2 ESB. In transport level there are number oftransport builders and formatters which enables the support of different message translationin bi-directional manner.In the designing such scenario, underlying implementation helps ESB to identify the messageformat and translate in to a common format use in WSO2 ESB. Currently SOAP 1.2 Messageformat is use as the intermediate message format. When message pass to endpoint it is alsoimportant to mention the message format that the service required. Rest of the mediation ofmessage 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 followingmanner. Figure 2.8 Normalizer Pattern Design DiagramFor the design shown in Fig. 2.8, user needs to configure proxy and respectivetransformations as shown bellow. Some of the transformations are handled by underlyingimplementation 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
  • <then> <property name="messageType" value="application/json" scope="axis2"type="STRING"/> </then> </filter> <log level="full"/> <send/> </outSequence> </target> </proxy> <localEntry key="in_transform"> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fn="http://www.w3.org/2005/02/xpath-functions" xmlns:m0="http://services.samples" version="2.0" exclude-result-prefixes="m0 fn"> <xsl:output method="xml" omit-xml-declaration="yes" indent="yes"/> <xsl:template match="*"> <xsl:element name="{local-name()}" namespace="http://services.samples"> <xsl:copy-of select="attribute::*"/> <xsl:apply-templates/> </xsl:element> </xsl:template> </xsl:stylesheet> </localEntry> <!-- Transform a JSON message --> <sequence name="jsonInTransformSeq"> <xslt key="in_transform"/> <property name="TRANSFORMATION" value="JSONtoSOAP" scope="default"type="STRING"/> <sequence key="sendSeq"/> </sequence> <!-- Normal flow of messages --> Page | 42
  • <sequence name="sendSeq"> <send> <endpoint> <address uri="http://localhost:9000/services/SimpleStockQuoteService" format="soap11"/> </endpoint> </send> </sequence> <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> <drop/> </sequence> <sequence name="main"> <log/> <drop/> </sequence></definitions>Other than mentioned EAI pattern I was given to implement Message History, MessageBroker, Transactional Client and some others too. By Implementing those EAI patternsimproved by knowledge on WSO2 ESB, WSO2 MB, WSO2 BPS and general knowledge inMessaging Systems as well. 2.10 Training SessionsAdapting to WSO2 technologies was not easy for a new comer as WSO2 uses cutting edgetechnologies everywhere. Even though we have done several projects in Java language, theway WSO2 use Java was too complex. They have used the language in most optimal way and Page | 43
  • obeyed the proper coding qualities. To tackle with those difficulties we were given sometraining sessions.Message Broker Training Session – This session was to introduce WSO2 Message Brokerto the other members in Integration TG. He explained about the queues and topics used inMB and about JMS transports.Carbon Training Session – This was done by a member in Carbon team. He explained aboutthe architecture of Carbon platform, the concepts like component, feature etc., how WSO2products are build on top of Carbon platform and how the building process happens inCarbon. It was a very important training session since all WSO2 products and solutions arebuilt on top of it. He also gave a practical demonstration on how to create a new carboncomponent and insert in to carbon platform.Synapse Training Session – The purpose of this training was to give a clear idea on ESBbefore test automation hackathon. It was a good opportunity for me to refresh the knowledgeon basic because I have been a member of ESB team. In that session speaker explained aboutthe importance of message system like ESB, basic concepts of ESB like sequence, mediator,proxy, endpoint etc. Then he further explained about the practical scenarios that ESB can beapplied.Clarity Framework and TestNG Training – Clarity framework and TestNG are two toolsused in writing test for carbon platform. This training session helped to understand thestructure of those tools and how they behave when building. In that session speaker alsoexplain the facilities we get through those tools compared to other testing framework andhow to use those facilities in proper way. 2.11 Non-Technical ExperiencesWSO2 internship period is not only with full of technical stuffs. There were non-technicalstuffs also. The main aim of these non-technical stuffs was to expose intern to WSO2permanent team members and improve the personality of the interns by giving them chanceto address friendly staff members. Page | 44
  • 2.11.1 DemonstrationOne month before the official training period concludes, Mr. Samisa Abeysinghe, VPEngineering asked all interns to be ready with presentations on what have completed duringinternship period. So within one week of time we were ready with presentations. On thesecond day of presentations I have to do presentations at Lobby area of main office. For mypresentations members of ESB team, friendly interns and Mr. Samisa came. I was able tosuccessfully complete the presentation along with the demonstration I have planned early. 2.11.2 WSO2 Basket Ball MatchesIn WSO2 annually there’s a basket ball tournament. First all staff members are divided in tofour houses called Legions, Titans, Cloud Bots and Wild Boars. After having selectionmatches final show down was held on 1st of November 2012. It was a celebrating event. Allmembers participate and cheered for the finalists. After a very exciting game Wild Boars winthe trophy beating Cloud Bots by one point. On that day night there was a party organizedand all WSO2 staffs participate to that with their children. Most of the interns alsoparticipated to that event and share experiences with staff and had a wonderful night. 2.11.3 Lunch out for internsWith the end of internship period, some members from other universities have to leave theWSO2. For that WSO2 has organized annual lunch out for interns. We had an opportunity ofhaving a lunch from selected place with the team members in Integration TG. 2.11.4 Celebrating SevenThis was the event to celebrate the seventh birthday of WSO2. With the participation of allinterns and employees this event held on main office. After singing happy birthday song forWSO2, all staff members joined the party. CTO of WSO2 addressed the staff members andsaid that he is so happy about the growth of WSO2 with in past seven years and willing toincrease productivity within next year. Page | 45
  • 3. Conclusion 3.1 Importance of Industrial TrainingCompleting three years studying at university, we have come across different theories incomputer science. We were able apply only few of those in practical assignments andprojects given in university. We have also heard about the practices taken in softwareindustry when a project is going on but we have not seen and had the feeling of working withsuch a team. At the beginning of the industrial period, we were just having bunch oftheoretical knowledge which we got from lectures. In the initial days of training we got toknow that industrial experience will be more different from the academic background we hadat university. In industrial most works are biased to practical purposes, but when takingdesign decisions, they consider about theoretical concepts learnt. Beyond that seeing that howto address business world problems, how to communicate with customers and identify theproblems were some new experiences. Since computer science is a vast field, different peoplecome from different backgrounds and have different skills. So as an intern I had tocommunicate with correct person to acquire the knowledge I want. Therefore learning acertain language and creating few applications using it won’t be enough to survive inindustrial environment. Without being an expert in designing one won’t be able to take theright decision at right time. Other than technical aspect it would be beneficial get to knowpeople in industry before exposing to job environment, and get the knowledge on computerscience industrial trends and new technologies. Considering all the facts, I think industrialtraining before exposing to industry will help undergraduates to build their personality andexposing to cutting edge trends in computer science. 3.2 Satisfaction on training establishmentWSO2 is a great place for computer science interns to do their internship. As a companywhich uses cutting edge technologies interns will be exposed to many different technologieseven they have not heard before. Being a hotbed for inventors in Sri Lanka, WSO2 consistsof computer engineers from different types of backgrounds and actually WSO2 is a resourcetank for an intern. According to interest of the intern, he can learn different stuffs with peoplein WSO2 and there’s no restriction to be bind to a particular product. The company also triesto do that by putting engineers in to support period and that is the best way to interact withdifferent products with in WSO2. In addition to that WSO2 gives more opportunity to build Page | 46
  • the personality of the interns. They do not treat interns as a separate set of people, but asemployees. We were given the most of the privileges that the employees are having. Mostsoftware companies didn’t think of non-technical stuffs, but WSO2 do. WSO2 believes thatthe productivity cannot be improved just by setting deadlines and schedules, but employeesneed to have some relaxed time and some time to chat with others and play games. Actuallythat plan seems to be successful and no employee tries to misuse those opportunities.WSO2 has lots of resources related to open source stuffs. Anyone can access to Oxygen tankand get the related stuffs. If an inters found something which is new to Oxygen Tank, he/sheis given the opportunity to publish those in Oxygen Tank and give rewards to encouragethem. While doing the individual projects it was very easy to meet a team member and askthem about the stuffs we had conflicts. In most cases I need to have chat with Mr. MiyuruWanninayaka and Mr. Charith Wickramarachchi to get the clear idea about the outcomes ofthe project. Even though they were very busy with work, they talked to me in a very friendlymanner and provided the exact solution I needed. Because of that, doing internship projectwas an interesting thing. Interns do not have to hesitate about asking even from senior levelpeople in WSO2 because they also try to help as best as they can. In that manner WSO2provides supportive friendly environment for all inters to make their internship period asuccessful one. 3.3 Industrial Training ProgramWhen I heard about the training period at first I thought it would be a difficult task to find asuitable training establishment. With the guidance and good coordination did by IndustrialTraining Division, Department of Computer Science and Engineering and NAITA it was avery easy task to have a good internship establishment place. Other than providing a place forinternship Industrial training Division gave instructions on what we should we learn duringthe training period and the rules we should obey. During training period we were required tomaintain the daily diary and submit 4-week report to Industrial Training Division. Not justproviding a training place, industrial visits done by both Industrial Training Division andDepartment of Computer Science and Engineering showed that they are also interested aboutthe quality of training that interns are getting from the training establishment place.As the suggestion I would like to bring attention on the training evaluation schema. Currentlywe have to write three main reports during internship period and it’s repeating the same thingthree times. My suggestion is, it would be easy if training division and departments can Page | 47
  • collaboratively maintain an online system which intern can submit his work weekly andfinally his internship is evaluated through those submissions. Currently all the departments infaculty has their own Moodle system, so this can be combined with it very easily. If suchsystem is set up, it would be a great help for an intern to submit his/her work very easily andreliably. Page | 48
  • ANNEXA1A1,1 Carbon PlatformA1,2 WSO2 ESB Architectural Diagram Page | viii
  • A1,3 WSO2 ESB Component DiagramA2 Severity Level Impact on Production Environments Catastrophic All or a substantial portion of the Subscriber’s mission critical data is at a significant risk of loss or corruption. The Subscriber has had a substantial loss of service The Subscriber’s business operations have been severely disrupted. Client resources should be available and willing to work on a 24x7 basis with WSO2 to resolve the issue. Urgent Operations can continue in a restricted fashion, although Subscriber’s long- term productivity might be adversely affected. A major milestone is at risk. Ongoing and incremental installations are affected. A temporary workaround is available Serious Impaired operations of some components, but allows the user to continue using the software. Initial installation milestones are at minimal risk. Trivial General usage questions. Recommendation for a future product enhancement or modification. Documentation errors. Levels of Severities Page | ix
  • A3 WSO2 Products OverviewA4 Axis2 Engine Page | x
  • REFERENCES[1] Handbook – Industrial Training, 2012[2] Sanjiva Weerawarana’s Blog, http://sanjiva.weerawarana.org/ [Accessed on 04/11/2012][3] Official website of WSO2, http://wso2.org/ [Accessed on 05/11/2012][4] Official website of WSO2, http://axis.apache.org/axis2/java/core/ [Accessed on05/11/2012][5] WSO2 Oxygen Tank, http://wso2.org/library/ [Accessed on 05/11/2012][6] WSO2 ESB Samples, http://docs.wso2.org/wiki/display/ESB451/Samples [Accessed on06/11/2012][7] WSO2 Test Automation JIRA- In Mediator, https://wso2.org/jira/browse/TA-39[Accessed on 06/11/2012][8] WSO2 Test Automation JIRA- Conditional Router Mediator,https://wso2.org/jira/browse/TA-123 [Accessed on 06/11/2012][9] WSO2 Test Automation JIRA- Validate Mediator, https://wso2.org/jira/browse/TA-254[Accessed on 06/11/2012][10] Apache Synapse JIRA-Resequencer, https://issues.apache.org/jira/browse/SYNAPSE-893 [Accessed on 07/11/2012][11] Apache Synapse JIRA-JDBC Message Store,https://issues.apache.org/jira/browse/SYNAPSE-916 [Accessed on 07/11/2012] Page | xi
  • ABBREVIATIONSAPI – Application Programming InterfaceASF – Apache Software FoundationEAI – Enterprise Application IntegrationESB – Enterprise Service BusFIX - Financial Information eXchangeFOSS – Free and Open Source SoftwareFTP – File Transfer ProtocolHTML – HyperText Markup LanguageHTTP - Hypertext Transfer ProtocolIDE – Integrated Development EnvironmentJDBC – Java Database ConnectorJSON - JavaScript Object NotationOSGi - Open Services Gateway InitiativePaaS – Platform as a ServicePOM - Project Object ModelSM – Senior ManagerSOA - Service Oriented ArchitectureSOAP - Simple Object Access ProtocolSVN – SubversionVP - Vice PresidentWSDL – Web Service Definition LanguageXML - Extensible Markup Language Page | xii