[white paper review] WSO2 Platform Offerings for Developers

WSO2 recently published a new white paper on what WSO2 platform can offer for developers. The paper talks about all the elements of WSO2 middleware platform and how it can aid a developer to build & govern enterprise applications.

The paper discusses about REST and SOAP service development with technologies like JAX-RS/WS and also using more of modern ways like jaggeryjs. The author have illustrated the plusses of each paradigm, when to use it and how to use it. The paper discusses how to write such services with support of WSO2 developer tooling, deploy them into WSO2 middleware and also manage them using WSO2 governance toolset.

The paper takes a deep dive into technologies like Apache CXF use and JEE support within WSO2 platform and how to use these frameworks to develop applications.

The paper also talks about API management which is a hot topic at present and how WSO2 API management solution can easily expose fully managed APIs for already created services.

There is a section on modern visualization composition in the paper where it discusses creating dashboards, micro-sites and simple html pages for the purpose of information visualization and management. This is with the use of WSO2 User Engagement Center

Use of cloud APIs via WSO2 integration platform (WSO2 ESB Cloud connectors) is highlighted in the paper giving the developers an insight on how to connect their applications to external APIs.

The paper also talks about using the AppFactory; WSO2’s newest tool for application development, management, governance, team management.

Do checkout the white paper as it gives an end-to-end idea about application development lifecycle with WSO2 platform

Advertisement

WSO2 ESB message corruption; False alarm

There seems to be a false alarm spreading over the online forums that WSO2 ESB cannot handle messages larger than 16K and results a corrupted response. This situation occurs only when a user enables one of the synapse properties which is disabled by default.

Streaming XPATH option is the aforesaid culprit, which is a newly introduced feature to optimize the performance in different message filtering / routing scenarios. However this does not effect the default workings of WSO2 ESB which does handle large messages successfully in thousands of enterprise deployments with the default XPATH implementation that ships out of the box.

As any new component achieve perfection with time, WSO2 ESB team have fixed all reported issues against streaming XPATH component (in ESB v4.8.0) and thrives to be the fastest ESB and the integration platform.

Following case study provide mode details on large message handling of WSO2 ESB in production.

UPDATE (02/17/2014) : WSO2 has released the latest performance stats, which details on the stream XPATH stabilization as well.

Agile Release Management & Product Engineering

I’ve been doing release management and product engineering for almost three years in WSO2. By no means am an expert. Am still learning and trying to tame the beast. However I do have my fare share of experience and knowledge which I have gathered by screwing it all up and also sometimes, doing it right as well 🙂

Recently we have done a successful 1.0.0 release of WSO2 User Engagement Server and I felt writing this post as the release retrospect.

Team

Team is the most important part of any product innovation. Without a strong, competent and hard working team you cannot achieve much (period !!). You feel it when it comes to agile release management. You cannot spoon feed your team. Each member will own a part towards success. You have to believe the quote “A Team Is Only As Strong As Its Weakest Link”, so your weakest got to be quite smart.

Milestones are short, quality of deliverables are high. The build *has* to pass always keeping the master stable. That’s a lot of work. A lot of smart work. So the team does matter and that’s the number one.

Well, WSO2 has the best from the Best and luckily UES had the dream team 🙂

1044748_10151485064622091_700075066_n

Vision

Number two is the Vision. Its not about the person whose leading the effort need to know the product vision. The team got to have a shared understanding about the vision of the product that they develop. Everybody has to be on the same page. If a button was moved from left to right everybody must know the reason behind that decision.

Non should develop a component without knowing the bigger picture of where that component fits in. (s)He should know the future of that component, what are the improvements can be done, how can it aid to market the product and how does it contribute to achieve the product’s vision.

Reviews

Reviews play a major role. They sync up the team. First you review the design, then review the architecture, the UI/UX and then the code. You get this right, you get a complete product feature.

During UES release, we did a lot of these. Our design review meetings were war zones. We talked about architecture and clean design patterns. Applied them appropriately and iteratively reviewed them. Our UI mockups were all over the whiteboard, we iterated until we achieve perfection. We reviewed our code, identified the improvements.

Continue reading Agile Release Management & Product Engineering

WSO2 User Engagement Server: How it kicked off from the whiteboard

We started re-engineering WSO2 Gadget Server during 2012 Winter. We were brainstorming of how we can change it to be more flexible and accommodate wider enterprise data/information presentation use-cases. We wanted to give more power to the developer, not just the ability to drag and drop widgets and select a layout. We wanted these pages to be discovered around the organization. With such ideas in mind we created multiple mind maps to get a clear idea

GS-2.0
GS 2.0 Mindmap (Nov. 2012)

We had plenty of email debates, F2F meetings of what we need to do ? Are we there yet ? Is this what developers/business users need ? etc. Continue reading WSO2 User Engagement Server: How it kicked off from the whiteboard

The Vision Behind WSO2 User Engagement Server

banner2

“A picture worth a thousand words” is a known fact which doesn’t need proof. At present we discuss about the value and the power of data. We use various tools to analyze them, we do business intelligence capturing trends or anomalies. However in the end you need to express the meaning in a sensible manner for the key decision makers. Would you go write thousand words or rather draw something, summarize the findings and let the stakeholder explore for more.

WSO2 Middleware stack has all the pieces you need to harvest, store & analyze (both real-time and periodical) vast amount of data sets, but when it comes to summarizing and presenting, the stack had somewhat a week tool set. We envisioned the idea of “SOA Last Mile” since latter part of 2009 with products such as WSO2 Gadget Server, WSO2 Mashup Server and frameworks such as viskit. We experimented, wrote code and delivered enterprise grade products to achieve this vision.  For instance WSO2 Gadget Server was one of the most downloaded products during 2010 – 2011 time span, and even now people are using it for various data presentation purposes.

Continue reading The Vision Behind WSO2 User Engagement Server

The Container and the Content

– Ajahn Brahm

A local journalist called and asked me “ What would you do, Ajahn Brahm, if someone took a Buddhist Holy Book and flushed it down the toilet?”

Without hesitation I answered “Sir, if someone took a Buddhist Holy Book and flushed it down the toilet, the first thing I would do is call a plumber!”

Continue reading The Container and the Content

Reading an XML file into WSO2 ESB; Transform it and expose it as an API

Recently was working on a project where I had a to read an XML file from an FTP location, transform it and expose it as an API. Used WSO2 ESB 4.6.0 for this usecase; and I thought of documenting it for later reference. So here it goes

First the proxy that read the file from FTP and dump it to a defined location, (VFSProxy.xml)


<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse" name="VFSProxy" transports="vfs" startOnLoad="true" trace="disable">
<target>
<inSequence>
<log level="custom">
<property name="STATUS" value="File received"/>
</log>
<property name="OUT_ONLY" value="true"/>
<send>
<endpoint>
<address uri="vfs:file:///home/nuwanbando/temp/files/out"/>
</endpoint>
</send>
</inSequence>
</target>
<parameter name="transport.PollInterval">10</parameter>
<parameter name="transport.vfs.ActionAfterProcess">MOVE</parameter>
<parameter name="transport.vfs.FileURI">vfs:ftp://<ftpserver_url>/home/nuwanbando/temp/files/in?vfs.passive=true</parameter>
<parameter name="transport.vfs.MoveAfterProcess">file:///home/nuwanbando/temp/files/processed</parameter>
<parameter name="transport.vfs.MoveAfterFailure">file:///home/nuwanbando/temp/files/failed</parameter>
<parameter name="transport.vfs.FileNamePattern">.*.xml</parameter>
<parameter name="transport.vfs.ContentType">text/plain</parameter>
<parameter name="transport.vfs.ActionAfterFailure">MOVE</parameter>
</proxy>

view raw

VFSProxy.xml

hosted with ❤ by GitHub

This proxy will dump the file to "home/nuwanbando/temp/files/out" location.

This file need to be read on-demand, once requested. ESB by default does not have a mediator to read XML files so that the mediation flow can manipulate the content, Continue reading Reading an XML file into WSO2 ESB; Transform it and expose it as an API

Discovering Admin Services in a WSO2 (Carbon) Server

This should be a quick how-to type guide; This method will work in any Carbon Based WSO2 Server (AS, ESB, BPS etc). I am taking WSO2 ESB as the example.

      1. Download the ESB and extract it. (lets say I extracted to {ESB_HOME})
      2. You will want to see the service contracts once you discover them so navigate to
        {ESB_HOME}/repository/conf

        and open carbon.xml

      3. make, HideAdminServiceWSDLs to false
        <HideAdminServiceWSDLs>false</HideAdminServiceWSDLs>

        and save the document

      4. Start the ESB with OSGI Console
        sh {ESB_HOME}/bin/wso2server.sh -DosgiConsole
      5. Once the server is started, push few return keys (hit enter) to get the OSGI shell in the console
      6. In the OSGI shell type
        osgi> listAdminServices
      7. That will give a list of services as shown below,
      1. All right now you want to see the service contract, lets select “Authentication Admin” Service which is listed as
AuthenticationAdmin, AuthenticationAdmin, https://192.168.219.1:8243/services/AuthenticationAdmin
    1. Take the url from the list and paste it in the browser with ?wsdl at the end, that will give the entire contract of the service

Happy Hacking 🙂

 

{jaggery.js}

Is something I’ve been working on at wso2 for sometime, if you are following me I have tweeted the updates, releases etc. Jaggery went live with its fifth milestone, few weeks ago at jaggeryjs.org, its still young and has alot to improve.

Explaining a little bit about jaggery; Its NOT an alternative to node, its simply a toolkit to easily compose webapps and apis. Its a completely javascript way of writing all parts of the web application, and communicate throughout in json. Jaggery has out of the box features to create RESTfull applications, and its one of it’s value propositions. Jaggery can be easily extended via modules which can be written in javascript or java for that matter.

A very simple page that prints out some request properties in jaggery looks like,

<html>
   <body>
      <p>
      <%
          print("Method : " + request.getMethod() + "<br/>");
          print("Protocol : " + request.getProtocol() + "<br/>");
          print("User-Agent : " + request.getHeader("User-Agent"));
      %>
      </p>
   </body>
</html>

Jaggery docs site also provide a tool for you to try out some code and play around. So you can simply copy the above code and paste in jaggery try-it

I recently did a webinar on jaggery that explains the simple case, over looking its API and samples. Below is the recording hope it’ll help.