WSO2 Venus

Yumani RanaweeraCreating a WSO2 artifact using Eclipse

As was shown in my previous article, we have a plugin which can be added to eclipse which will open you a development environment to create artefacts used in WSO2 products. Now lets see how we can create WSO2 product artefacts in this environment.

So to start off with, you need to have eclipse IDE, (preferably, eclipse-jee-galileo) and install WSO2 cApp following the steps in here.

After WSO2 cApp is installed and the IDE is restarted, do following;

1. Create a WSO2 project
Go to File > New > Project. This will open up the 'New Project' wizard.
You have two menu options for this:
  • You can either select 'Carbon Application Project' option that appear at the beginning of the list.
  • Or you can select 'WSO2' at the bottom, which will also give 'Carbon Application Project' when you expand it.

In the next step, give your project a name and 'finish' the wizard.

Now you'll have a project created (with the name you gave) in the 'Project Explore'. Expand the project folder and you'll find its initial content as shown below;
  • JRE System library - Jars from your java runtime
  • java-src -the place where you keep the java src files
  • Artifacts - you will have this empty when you start. Later when you create an artifact, it will appear inside this.
  • root-artifact.xml - Is the place which manages you project
  • Server Roles - Server roles that you can specify for each of your artefact.

2. Create an artifact
Double click on root-artifact.xml. Click on 'Create New Artifact' button. You will get a drop down menu, which will have all WSO2 artifacts that are supported up to now.

From the menu simply select the artifact you need to create.

I will explain how to create few ESB artefacts in my next posts.
Enhanced by Zemanta

Tyrell PereraHow (and what) reddit gained from digg revolt #5


Here's that analysis we promised of what happened yesterday traffic-wise (tldr: everything went better than expected). via reddit.com

We had some interesting traffic yesterday. Usually that would mean it's time for a technobabbly post-mortem about which part of our infrastructure failed and caused the site to go down for three hours. However, something strange happened this time: the site didn't go down (knock on wood). So I guess we're going to have to set aside tradition and instead make a, um.. "postpartem" blog post about how things bent but did not break.

TL;DR: Money from reddit gold users went to defence against a massive attack of Digg users. And not only reddit managed to overcome the attack, it also converted them to the better religion! Plus, they have reandomly put gamed in their advertisement boxes, which makes users turn AdBlock off for reddit.

As those who follow me on Twitter know, I created an account at reddit too, joining the flood of digg refugees going there since digg revolt #5 started. As things stand at the moment, I might not return... ever.


Chanaka JayasenaWSO2Con 2010 -- Colombo ,Sri Lanka September 14 & 15






type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="315">

Designed to help prepare you for the future enterprise, WSO2Con features some of the most renowned technical thought leaders and focuses on the unique convergence of SOA and Cloud. For more information or to register visit http://wso2.com/event

Keynotes



Imagining the Future and Making it Happen
Prof. Rohan Samarajiva
Chairman & CEO, LIRNEasia




Enterprise Computing in 2020
Paul Fremantle
Co-Founder & CTO, WSO2 Inc.



A Walk Down Memory Lane: XML, Web Services & SOA from 1990 to 2010




James Clark
Father of XML & Founder, Thai Open Source Software Center




Sanjiva Weerawarana, Ph. D

Founder, Chairman & CEO, WSO2 Inc.




Jonathan Marsh

VP, Business Development & Marketing, WSO2 Inc.




Tyrell PereraCreating a loved brand by telling a story: Tether

From the YouTube description of this clip ...

Stanley Hainsworth has been creative director at Nike, Lego, and Starbucks—all brands that have become iconic through good design. He just finished designing the new Gatorade bottle, too. Hainsworth clearly has a remarkable eye for style, but he insists that the key to creating a brand that attracts fans, that people love, is telling the company's story.

Hainsworth says that companies like Apple have a persona. "You could describe what Apple is as a person, because of the personality they've created," he explains. "So when we work with tech startups, the first thing we have to figure out is their story—what sets them apart in the marketplace."

Now at the helm of Tether, his own design studio and retail space in Seattle, Hainsworth keeps looking for new challenges. "When I left Starbucks, people thought I'd want to work someplace really hip, like Diesel or Apple. I told them I wanted to work with Microsoft and Wal-Mart—two great American brands that have never told their story well. They both have incredible stories, if you think about the startups that they were at the time—it's unbelievable. Bill Gates, what he went through, and his story: it's never been told well. They've never used it to their advantage. They've become a product company with no soul."

"Great companies read your soul," says Hainsworth. "They give you something you didn't even know that you needed."



Nuwan BandaraBreaking months of silence

Its been awhile am writing a post, was busy, was traveling mostly was lazy. Lot happened during the past two months, I started reading for my masters in Management & Information Technology. Yeah I know !! “Management”, I wanted to explore that side of the story, since its with IT, I thought it will might come in handy at some point. Maybe I’ll be completely wrong ;)

I was in California (In San Francisco to be specific) for almost two months, providing consultancy for a customer. Was able to visit Google head office in mountain view and I was fascinated. Even I am back in SL and almost a month has passed by, I still couldn’t get back into writing. First I thought its my busy schedule, and that I do not have time, But then I got vacation. Now the one week long vacation has almost come to an end, and all what I have done is sleep, watch movies, read, tweet and sleep.

I visited my blog once in awhile, and immediately closed the tab, with a guilty feeling for making it’s post calender so empty. So even this post contains nothing valuable, I wish it will make me start writing again.

I should Tweet less and blog more !!!

Nandika JayawardanaMemory Lane

WSO2 is celebrating its fifth anniversary. I have been at wso2 for exactly 5 years today.So I decided to put together some special moments at WSO2. There were many and these are the photos I could find.

OLYMPUS DIGITAL CAMERA

This was the first WSO2 day out. This was way back in 2005 and place is blue waters. From left to right, Chamil, Sahan, Ruchith, Chinthaka, Saminda, Sanka, Deepal, Buddhika, Chamikara,Dr Sanjiva, Samisa and me.IMG_0019

This was the first major WSO2 product release. WSO2 WSAS was called Tungsten in those days. With ‘w’  representing Tungsten in the periodic table and w being the starting letter of the company name, it was decided to name WSO2’s first product as Tungsten. Sad that those metallic product names had to go away.

Picture 045

Samisa was the first wso2 employee to get married while at WSO2. It was Axis2/C early days and we were on a tight release schedule on those days. The C team had a call with Samisa even on his wedding holidays!.

03-sigiriya-by-chamil-069

04-safari-by-samisa-051

This was the first official WSO2 trip. It was to habarana lodge. The food there was awesome and the guys had put up a few kilos by the time we left. The top photo is taken at the entrance of Sigiriya. The second one was taken at Echo park. Deep and Me ended up going to this place three times.

IMG_0074

This is one of the group photos taken inside the old WSO2 office in merchant tower.  Everyone is dressed to go to a wedding as I remember.  From left to right, its Sandakith, Nandika, Azeez, Saminda, Asanka, Milinda, Ajith, Chinthaka, Deepal, Ruchith, Chamikara, Sanjaya, Sahan, Amila, Sanka, Samisa and Damitha. 

DSC_0184_small

WSO2 has grown and prospered over five years and this is how it looks in 2010.

Samisa AbeysingheThe Gambler

On a warm summer's evenin' on a train bound for nowhere
I met up with the gambler, we were both too tired to sleep
So we took turns a starin' out the window at the darkness
'Til boredom overtook us and he began to speak

He said, "Son, I've made a life, out of readin' people's faces
And knowin' what their cards were by the way they held their eyes
So if you don't mind my sayin', I can see you're out of aces
For a taste of your whiskey I'll give you some advice"

So I handed him my bottle and he drank down my last swallow
Then he bummed a cigarette and asked me for a light
And the night got deathly quiet and his face lost all expression
Said, "If you're gonna play the game, boy, you gotta learn to play it right"

You got to know when to hold 'em, know when to fold 'em
Know when to walk away and know when to run
You never count your money when you're sittin' at the table
There'll be time enough for countin' when the dealing's done

Every gambler knows that the secret to survivin'
Is knowin' what to throw away and knowing what to keep
'Cause every hand's a winner and every hand's a loser
And the best that you can hope for is to die in your sleep


And when he finished speakin', he turned back towards the window
Crushed out his cigarette and faded off to sleep
And somewhere in the darkness the gambler, he broke even
But in his final words I found an ace that I could keep

You got to know when to hold 'em, know when to fold 'em
Know when to walk away and know when to run
You never count your money when you're sittin' at the table
There'll be time enough for countin' when the dealing's done

You got to know when to hold 'em, know when to fold 'em
Know when to walk away and know when to run
You never count your money when you're sittin' at the table
There'll be time enough for countin' when the dealing's done

You got to know when to hold 'em, know when to fold 'em
Know when to walk away and know when to run
You never count your money when you're sittin' at the table
There'll be time enough for countin' when the dealing's done



Samisa AbeysingheInto iPad Era

Here comes the first blog from iPad.

For a computing device, I always believe that this will revolutionize the way we would be doing computing. HCI would be taken to new heights.

Anyway, I am already into it. The other day, I wrote a three page doc, and it took me only an hour or so. The laptop is great, but the mobility and the keyboard that iPad provides give you much more productivity gain. This is nit like that phone with a keypad. Even the iPhone was cool, only because you could touch it, but that was it. But iPad for me is much, much better.

Soon we would have iPanels. In other words Mac laptops will come with no keyboard, and you would do everything with touching. Other vendors would soon follow. It is almost there with iPad if we had multiple app capability; that Alt+Tab thing. Yes i miss that a bit. But may be not that much, as I still have my laptop as well.

I long for the day where we could have that Iron Man movie like HCI. Where you could draw neat images with you hand. Where you could dictate the program rather than write it (and to hell with that IDE). Some day, sooner than later, people will do those kinds of things. And we software engineers will have much more time to do better things than writing stupid code to these dumb machines.


Samisa AbeysingheProgrammer Quality

"If builders built houses the way programmers built programs, the first woodpecker to come along would destroy civilization." - Gerald P. Weinberg

Sameera JayasomaElephant Attack in Wasgamuwa National Park in Sri Lanka

It was around 7.30 in the morning. We were heading towards the furthest places - yet to be discovered, that is what was in my mind - in the Wasgamawa National Park, Sri Lanka. Sky was clear with one or two small clouds here and there. It showed all the signs for a bright, sunny day. Birds were flying out of their nests and some were flying away from us, as we go alone the road. it seemed that they were afraid of the engine roar. We even stopped the engine at certain places and searched for leopards, Elephants desperately.



As we were going deep into the park, chatting, teasing other people, suddenly we saw something coming towards us. It was an Elephant and was just 5 meters away from us. We all were astonished. I never thought an elephant can move at such speeds. For a second, I thought that it was gonna hit us. The driver stopped the vehicle in a flash and the guy who was in the front seat, open the door said something. Luckily at the last minute, it turned away from us with a terrified look and started moving fast alone the road behind us. It didn't take much time for us to realize that it was now heading towards the other vehicle. We had to hire two vehicles, since there were 23 people and they all were my colleagues working at WSO2. The driver of the other vehicle open the door and said something. Elephant raised his trunk and made the famous elephant trumpet and moved away from the other vehicle. We all felt a big relief. I think these guys from the Wasgamuwa National park knows the language of elephants and they used "hoi..." to control the terrified elephant who almost hit us.



It was a fierce moment for all of us. Now I feel like, we are very lucky to witness such an amazing moment. This journey to Wasgamuwa park was full of such events. We started the journey from office at about six in the morning on 21th, August 2010. This elephant attack happened on the following day.

Deepal JayasingheWeb services past, present and future

What is a Web service? There are multiple definitions or understandings about Web services, one can argue Google search as a Web service, meaning a service offered via Web, same way Amazon retailer site can be also considered as a Web service, because it offers a way to buy and sell product over the Web, or application to application communication through open protocol like SOAP can be also considered as Web service. However, here my main focus is SOAP based Web services, meaning application to application communication.

In the distributed system, remote service invocation is not a new thing at all, even in the early papers on operating system design discussed about remote procedure calls or RPC. In fact they have provided sound architecture to implement RPC. Later, people wanted to develop more complex and application aware middleware to have distributed communication, among them CORBA and Java RMI became two commonly used technologies. Nevertheless, due to complexity of CORBA and domain dependency of Java RMI (only within JAVA) people tend to find other alternatives. Introduction of XML into the industry influenced lot on this effort. Then, people realized XML as the future communication media, in fact Bill Gates also believed XML going to be the dominant media for applications communication.

As a results of long collaboration between IBM and Microsoft (and also some other companies), SOAP came into the industry as a way of building application communication middleware. IBM started its implementation of SOAP based web service middleware and later donated that to Apache Software Foundation and which became Apache SOAP, and started Web service community around Apache. Apache SOAP was very simple and assumed to be proof of concepts; people really liked Apache SOAP and started to use it to application integration, then demanded a set of new features, which leads to have an array of Web service standards and specifications. In addition a set of Web service bodies to enforce satisfaction of specifications. At that time there were multiple Web service frameworks out there, Apache had Apache SOAP and Apache Axis, and Microsoft had Indigo (later renamed to .Net), Oracle, Sun, BEA, HP and few other companies had their own implementations.

One of the natures of any application is need of evolving and revolving, same thing happen to Web services, where it started as a simple set of standards, but today there are a number of standards. As a matter of fact Web service has become somewhat complex for average people. Even though there are hundreds of Web service specifications, there is no single Web service framework which implements all the standard, according to my understanding Axis2 is the only open source Web service framework implement highest number of standards, and of course Microsoft is leading in commercial market.

One of the main barrier of Web services is the complexity of WSDL, both WSDL 1 and WSDL 2 are little too complex to understand. In addition other standard like Security, Reliability and Addressing are way too complex for simple usages. That is something, standard bodies need to consider about.

Way back in 2004 when we started Axis2, one of the key goal was to have less than 1 MB size for the distribution, but, due to supported specifications and features it is way too big and complex. I have seen number of concerns on the mailing lists. I think this is true for any product, when they keep adding features, application become complex and size become larger.
Within a short period of time, Web services have made big impact to the industry, where most use Web service as a way of application integration. In addition most applications offer a Web service interface to access the service (e.g., Google, Amazon, Weather), which help to write custom components and application. Above all, with cloud computing, Web service became one of the standard ways to manage and monitor cloud based services. Simply, Web services have won the market today. But what will happen in the future …..

I think, due to complexity of Web service, people tend to find other alternatives or ways to reduce the complexity of Web services, but one thing is obvious that is XML will remain unchanged. In the future regards REST will play a major role, even today some believe REST is better than SOAP, which is in fact true for some scenarios, but when it comes to complex scenarios REST is not there to support them. Simply need additional specifications to handle addressing, security and etc… which will end up being yet another SOAP based Web service framework. As a Web service lover, I still believing in Web services, but I would like it to be simple and easy to use, yet provide what industry need.

Samisa AbeysingheWSO2Con 2010 Colombo



The first ever WSO2 Conference on SOA and Cloud Technologies will be held in Colombo from 14th to 15th September 2010.

WSO2 has played a major role in redefining the enterprise computing space. Come and learn the state of the art technologies, techniques, architecture patterns in the enterprise computing space. Come, learn and envision the future enterprise computing.

Charitha KankanamgeProcess vs Tools and Technologies - What should Sri lankan QA community be concerned with?

I have been thinking about discussing the matters related to local QA community in Sri lanka but never got a chance. Recently I was able to meet a lot of folks who are engaged in software quality assurance in various sri lankan organizations in one place at a quality summit. By listening to the presentations and talking with people, I came out with a few basic questions.

Some of them were;
what the biggest concern of software quality assurance in our country? are those processes or tools/technologies? Do we have the necessary trainings or knowledge sharing mechanism to overcome the issues which we face during daily QA tasks?

In my view, the biggest concern of QA in our country is, not having people with enough technical skills. By interviewing a lot of QA folks for the past few years, I personally have a good experience about the way people are approaching QA. Most fresh graduates believe that QA as a first step towards entering in to software industry! Some people joins QA merely to get some understanding about the product/project then move in to business analysis or sales.
Why is this? IMO, it is totally due to the perception of software QA in sri lanka. We, sri lankan QA community, must be responsible for drawing that image on people's minds about QA.
For the past few years, I never noticed any training (were there any?) for educating QA community about the usage of tools in daily QA tasks to be more productive or technical aspects such as performance/automation testing tools. Instead, whenever there is something about QA, it is about CMMI or process frameworks.
I'm not going to say that those are not important. BUT those are not what our teams need at the moment.
People struggle with configuring application server X on operating system Z. QA folks face in to difficulties when automating AJAX based UIs. How QA should be dealt with the frequent UI changes during UI based test automation? How can we be more productive using linux? Do we use any scripting language for automate repetitive configuration tasks? Are we doing continuous integration? Are QA people familiar with build tools such as Maven or Ant? Do we know about exploratory testing? Do we know how to use test coverage tools? Do we report bugs with the adequate logs and find the root cause of them?

I think these are the questions that most of the QA teams have. We should try to be more productive and be experts as a community. We should try to change the perceptive about QA by empowering everyone with the right set of skills.

If people are comfortable with the tools and technology they are handling in daily work life, educating them about processes and process improvements is not a big thing!

Tyrell PereraThe Smoking Gun of Sales and Marketing Alignment

The Smoking Gun of Alignment » Crandell’s Corner
Boards and CEO, regardless of their domain expertise, are puzzled as to how to measure marketing. When asked what metrics they use the most frequent response is leads. Yet when probed, it’s not really leads, it’s inquiries. Both groups then lament on how marketing cannot produce quality “leads” and when asked how they fix the situation, the most frequent response is to replace the CMO. The response was the same for those CEOs that rose through sales as well as marketing ranks.

... a great post by @ChrisCrandell


Charitha KankanamgeHow to deploy WSO2 ESB-3.X on Apache Tomcat

I have noticed a lot of different articles, blog posts with instructions on deploying WSO2 ESB on Apache tomcat. But I observed that most of them are obsolete and the guidelines are not applicable for the latest ESB versions. Therefore, I thought to put together the steps of setting up WSO2 ESB-3.X versions on Apache Tomcat-6.X

Step 1:
Download WSO2 ESB-3.X. Extract the downloaded zip and copy repository and resources directories in to a new folder. Say it is esb-repo (i.e:- /home/user/esb-repo)

Step 2:
Lets refer to your tomcat installation directory, CATALINA_HOME. Go to CATALINA_HOME\webapps directory and create a new directory, esb.
Now, copy wso2esb-3.0.0\webapps\ROOT\WEB-INF to CATALINA_HOME\webapps\esb
Also, copy wso2esb-3.0.0\lib\log4.properties file to CATALINA_HOME\webapps\esb\WEB-INF\classes

Step 3:
Next, we need to enable https in tomcat. Therefore, edit CATALINA_HOME\conf\server.xml by adding the following entry.

<Connector port="8443" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true" SSLEnabled="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile = "/home/user/esb-repo/resources/security/wso2carbon.jks"
keystorePass="wso2carbon"/>

Make sure to give the exact location of wso2carbon.jks as highlighted above.

Step 4
We have done the configurations required in tomcat. Now, we must do the necessary configurations in a set of config files shipped with WSO2 ESB. We will update carbon.xml, axis2.xml, registry.xml and user-mgt.xml which can be found at esb-repo/repository/conf directory.

First, open carbon.xml and update the ServerURL element as follows.

<ServerURL>https://localhost:8443/esb/services/</ServerURL>

Note that we have configured tomcat to run on 8443 port.

When we deploy ESB on an application server, it uses the http/https transport provided by the servlet container when communicating with registry. Therefore, we must update the registry HTTP port in carbon.xml. In order to do that, uncomment and update the following element in carbon.xml.

<RegistryHttpPort>8080</RegistryHttpPort>

Thats all we need to update in carbon.xml, save and close the file.

Next, open registry.xml and update DB URL as follows.

<url>jdbc:h2:/home/user/esb-repo/repository/database/WSO2CARBON_DB</url>

Now, open user-mgt.xml and update user management database URL as follows.

<Property name='url'>jdbc:h2:/home/user/esb-repo/repository/database/WSO2CARBON_DB</Property>

Make sure to specify the absolute path of the WSO2CARBON_DB in both of the above elements.

Next, we need to configure a few elements in esb-repo/repository/conf/axis2.xml file.

Locate NIO HTTPS transport listener (HttpCoreNIOSSLListener) element and specify the absolute path of keystore and truststore locations as follows.

<KeyStore>
<Location>/home/user/esb-repo/resources/security/wso2carbon.jks</Location>

<TrustStore>
<Location>/home/user/esb-repo/resources/security/client-truststore.jks</Location>

Similarly update the keystore and trustore paths of NIO HTTPS transport sender (HttpCoreNIOSSLSender)

We should also specify the absolute path of synapse-config directory as follows.

<parameter name='SynapseConfig.ConfigurationFile' locked='false'>/home/charitha/products/esb/esb-repo/repository/conf/synapse-config</parameter>

Step 5
We have almost completed the required configurations. Now, open a new shell and change the directory to CATALINA_HOME/bin.
Define an environment variable called CARBON_HOME and set the path to your esb-repo directory.

In windows; set CARBON_HOME=C:\esbs\esb-repo
In linux; export CARBON_HOME=\home\user\esb-repo

Start tomcat from the same command window/shell.
catalina.sh run

WSO2 ESB will be started successfully. You can access the management console using https:\\localhost:8443\esb\carbon

Thats all! You could follow the above steps and deploy WSO2 ESB-3.X on Tomcat successfully. If you do not like to follow each of the above steps manually, I have written a ruby script to automate the above procedure and install ESB on tomcat. You can download it from here
You just need to specify three directory paths there in esb3.X_tomcat_install_linux.rb and rest of the installation steps will be done automatically by the script.
esb_repo = Any directory in the local file system
CARBON_BIN_HOME= Home directory of ESB binary distribution
CATALINA_HOME= Home directory of the tomcat binary

Kalani RuwanpathiranaHow to Find which Process Runs on which Port in Windows

netstat -ab shows which process runs on which port. If you need to find a process which runs on a particular port, the command can be used as follows netstat -ab | find ":8080 "


Kalani RuwanpathiranaHow to Remove Duplicate Records from a Table, Considering a Subset of Columns - Sql

I wanted to delete some duplicate records from a table. "Duplicate" doesn't mean identical records in this scenario. I wanted to check whether the values in a subset of columns are identical and if so, to remove additional records keeping just one record in the table.  Let's assume we have a table called Person like below IdNameAgeCity 10Sunil24Matara 11Sandun25Colombo 12Nimali23Matara


Chintana WilamunaMaven setup for Axis2 service development

There are many resources on the Net giving how to write an Axis2 service. And of course internals of Axis2 itself. This is a simple guide that aims to provide info on howto setup the build environment so that you can get a deployable artifact of an Axis2 service. For the most part you’ll be [...]

Chintana WilamunaCodegen and runtime Axis2 versions

I was bitten by this error a couple of times I thought of blogging it for my own reference. It’s important to remember that when you’re generating code against some WSDL, you have to use the same version of Axis2 that you’re going to deploy this service on. So, when you’re running WSDL2Java.sh that should [...]

Saliya EkanayakeGreat Feedback: MapReduce In Simple Terms

My presentation on MapReduce has received some great feedback via Pragmatic Integration. Isn't it really nice to see how somebody who you don't even know benefits from something you have?

Chintana WilamunaPaaS and open source

Ted Leung has some interesting ideas about Platform As a Service (PaaS) and open source. I agree with Ted that open source software is not becoming any less relevant. Looking at current platform as a service offerings Ted’s view of, The more interesting question for developers has to do with infrastructure software. In my mind [...]

Charitha KankanamgeHow to configure persistent RM in WSO2 WSAS

WSO2 Web Services Application Server (WSAS) provides with a storage manager in which you can persist messages transmitted between RMS (reliable messaging source) and RMD (reliable messaging destination). By configuring persistent RM, you can prevent messages loses even if the server is down. This post guides you through the steps to configure persistent RM in the latest versions of WSO2 WSAS (WSAS-3.*). I assume you have a basic understanding about WS-RM, if not, please read http://www.infoq.com/articles/fremantle-wsrm-introduction first.
Pre-requisites
Download and install WSO2 WSAS-3.1.1

Persistent implementation of WS-RM will be supported in most of the popular DBMSs. However, I will use MySQL server 5.* in this demonstration. Therefore, install and configure MySQL.

Step 1
As the first step, we need to create the persistent storage which is going to be used in reliable message transmission. Lets create a data base and the necessary table as follows.

mysql>create database SANDESHA_DB;


mysql>use SANDESHA_DB;


mysql>create table wsrm_sender (
message_id varchar(255) not null,
message_context_ref_key varchar(255),
internal_sequence_id varchar(255),
sequence_id varchar(255),
to_address varchar(255),
inbound_sequence_id varchar(255),
send smallint,
sent_count integer,
message_number bigint,
resend smallint,
time_to_send bigint,
message_type integer,
last_message smallint,
inbound_message_number bigint,
transport_available smallint,
flags integer,
primary key (message_id)
);

mysql>create table wsrm_rmd (
sequence_id varchar(255) not null,
to_epr_addr varchar(255),
to_epr blob,
reply_to_epr_addr varchar(255),
reply_to_epr blob,
acks_to_epr_addr varchar(255),
acks_to_epr blob,
rm_version varchar(255),
security_token_data varchar(255),
last_activated_time bigint,
closed smallint,
terminated_flag smallint,
polling_mode smallint,
service_name varchar(255),
flags integer,
reference_message_key varchar(255),
highest_in_message_id varchar(255),
last_in_message_id varchar(255),
server_completed_messages blob,
outof_order_ranges blob,
to_address varchar(255),
outbound_internal_sequence varchar(255),
next_msgno_to_process bigint,
highest_in_message_number bigint,
rmd_flags integer,
primary key (sequence_id)
);

mysql>create table wsrm_rms (
create_seq_msg_id varchar(255) not null,
sequence_id varchar(255),
to_epr_addr varchar(255),
to_epr blob,
reply_to_epr_addr varchar(255),
reply_to_epr blob,
acks_to_epr_addr varchar(255),
acks_to_epr blob,
rm_version varchar(255),
security_token_data varchar(255),
last_activated_time BIGINT,
closed smallint,
terminated_flag smallint,
polling_mode smallint,
service_name varchar(255),
flags integer,
id bigint,
internal_sequence_id varchar(255),
create_sequence_msg_store_key varchar(255),
reference_msg_store_key varchar(255),
last_send_error blob,
highest_out_relates_to varchar(255),
client_completed_messages blob,
transport_to varchar(255),
offered_endpoint varchar(255),
offered_sequence varchar(255),
anonymous_uuid varchar(255),
last_send_error_timestamp bigint,
last_out_message bigint,
highest_out_message_number bigint,
next_message_number bigint,
terminate_added smallint,
timed_out smallint,
sequence_closed_client smallint,
expected_replies bigint,
soap_version integer,
termination_pauser_for_cs smallint,
avoid_auto_termination smallint,
rms_flags integer,
primary key (create_seq_msg_id)
);

mysql>create table wsrm_invoker (
message_context_ref_key varchar(255) not null,
sequence_id varchar(255),
context blob,
msg_no bigint,
flags integer,
PRIMARY KEY (message_context_ref_key)
);

mysql>create table wsrm_msgctx (
ctx_key varchar(255) not null,
ctx blob,
PRIMARY KEY (ctx_key)
);

Note: From WSAS-3.2.0 onwards, the following columns must be added to the wsrm_rms table in addition to the columns specified above.

offered_endpoint_epr_addr varchar(255),
offered_endpoint_epr varchar(255),
reallocated integer,
internalSeqIDOfSeqUsedForReallocation varchar(255),

Step 2

Since we are going to establish a JDBC connection to a MySQL DB, copy mysql jdbc driver to WSAS_HOME/repository/components/lib and restart WSAS
Log in to WSAS management console and click on modules -->list. Click on configure link of the sandesha2 module.
By default, WSO2 WSAS uses an inmemory implementation of WS-RM. You can change it to persistent by changing Storage Manager property. Configure the rest of the persistent storage details as follows.
Connection String - jdbc:mysql://localhost:3306/SANDESHA_DB
Driver Name - com.mysql.jdbc.Driver
Username - your mysql username
Password - your mysql password




Step 3

Now, you have enabled persistent RM in WSO2 WSAS. However, due to a bug in the latest WSAS releases, you should update the following property in WSAS_HOME/conf/axis2.xml

<parameter name="Sandesha2StorageManager">persistent</parameter>

Make sure to restart WSAS after configuring the above element in axis2.xml

Step 4

Now, you are ready to send requests to a service hosted in WSAS through RM and verify persistent RM. In order to do that, engage sandesha2 module in a service and send series of requests (say 100 requests) using a RM client (I assume you are familiar with sending soap messages with RM headers. I will publish a separate post on complete RM client-server invocation soon). After transmitting 30 requests, shutdown WSAS and restart. You will notice that after the server is restarted, the message transmission will be resumed from the message no: 31

If you have any issues with the steps given above, please drop me a mail.

Chanaka JayasenaWorst fruit in the world




This is kiwi fruit. If you want to catch a diarrhea, eat a small piece.

Chanaka JayasenaGoogle analytics style Hour/Day/Month range picker

Download Date Picker

I was searching for a Google analytics date picker style control to put on WSO2 BAM. All the date pickers out there are just selecting a date range. They don't support the ability to select an hour range or a month range. So I rote a one.









I use YUI to handle Dom. Plus the date rage picker is YUI date picker. This control is used in "The WSO2 Business Activity Monitor (WSO2 BAM)".

Krishantha SamaraweeraHow to deploy WSO2 Gadget Server on tomcat

Applies To: wso2gs-1.1.0.zip ( Carbon 3.0.0)
apache-tomcat-6.0.20

Step 1
Download WSO2 Gadget Server -1.1.0 from http://wso2.org/downloads/gadget-server. Extract the downloaded zip into a directory. And copy repository and resources directories in to a new folder. Here after, we will refer it as gs-repo (eg:- /home/krishatha/gs-repo)

Step 2
Lets refer to your tomacat installation directory as CATALINA_HOME. Go to CATALINA_HOME/webapps directory and create a new folder call wso2gs .Now, copy wso2gs-1.1.0/webapps/ROOT/WEB-INF to
CATALINA_HOME/webapps/wso2gs

Step 3
Now you will need to enable HTTPS on Apache Tomcat since WSO2 Gadget Server runs over HTTPS. To do this, access the server.xml file located at CATALINA_HOME/conf and uncomment the following
and fill as below.


<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile ="/home/krishatha/gs-repo/resources/security/wso2carbon.jks"
keystorePass="wso2carbon"/>



One could find the wso2carbon.jks file inside the CARBON_HOME/repository/resources/security/ directory in WSO2 Gadget Server installation home (CARBON_HOME)

Make sure to give the exact location of wso2carbon.jks
Note: you can use your own keystore file if required.

Step 4
Now we must do the necessary configurations in a set of config files shipped with WSO2 Gadget Server. We will update carbon.xml, axis2.xml, registry.xml, mgt-transports.xml and user-mgt.xml which can be found at gs-repo/repository/conf directory.

(a) Edit the carbon.xml in gs-repo/repository/conf and put /wso2gs as the WebContextRoot


<WebContextRoot>/wso2gs</WebContextRoot>



the WebContextRoot will be the name you used to create war distribution in CATALINA_HOME/webapps

(b) Edit the same carbon.xml and set backend sever URL as below.


<ServerURL>https://your-ip:8443/wso2gs/services/</ServerURL>


It is recommended to use your IP rather than using localhost or hostname.
Note that we have configured Tomcat to run on 8443 port now.

(c)Now open axis2.xml to change the http and https ports in the Transports section of axis2.xml as follows:


<transportReceiver name="http"
class="org.wso2.carbon.core.transports.http.HttpTransportListener">
<parameter name="port">8080</parameter>
</transportReceiver>


<transportReceiver name="https"
class="org.wso2.carbon.core.transports.http.HttpsTransportListener">
<parameter name="port">8443</parameter>
</transportReceiver>

(d) Edit the mgt-transports.xml as follows: https and http ports of the transport section can be changed as follows.


<transport name="http" class="org.wso2.carbon.server.transports.http.HttpTransport">
<parameter name="port">8080</parameter>



<transport name="https" class="org.wso2.carbon.server.transports.http.HttpsTransport">
<parameter name="port">8443</parameter>


(e) Open registry.xml and update DB configurations as follows:


<dbConfig name="wso2registry">
<url>jdbc:h2:/home/krishatha/gs-repo/repository/database/WSO2CARBON_DB</url>
<userName>wso2carbon</userName>
<password>wso2carbon</password>
<driverName>org.h2.Driver</driverName>
<maxActive>50</maxActive>
<maxWait>60000</maxWait>
<minIdle>5</minIdle>
</dbConfig>


Note that you have to use absolute path to the H2 DB.

(f) Open user-mgt.xml and update DB configurations as follows:

<Property name="url">jdbc:h2:/home/krishatha/gs-repo/repository/database/WSO2CARBON_DB</Property>
<Property name="userName">wso2carbon</Property>
<Property name="password">wso2carbon</Property>
<Property name="driverName">org.h2.Driver</Property>
<Property name="maxActive">50</Property>
<Property name="maxWait">60000</Property>
<Property name="minIdle">5</Property>


Note that you have to use the absolute path to the H2 DB.

Step 5
You also need to copy the wso2gs-1.1.0/lib/log4j.properties file into CATALINA_HOME/webapps/wso2gs/WEB-INF/classes

Step 6
Now copy the jar files in wso2gs-1.1.0/lib/endorsed/ into CATALINA_HOME/lib. You need to copy the followig jar files.

1. xalan-2.7.0.wso2v1.jar
2. xercesImpl-2.8.1.wso2v1.jar
3. xml-apis-1.3.04.wso2v1.jar

Step 7
We have completed the required configurations. Now, open a new command window and change the directory to CATALINA_HOME/bin. Define an environment variable called CARBON_HOME and set the path to your gs-repo directory.

In windows; set CARBON_HOME=C:\gs\gs-repo
In linux; export CARBON_HOME=/home/krishatha/gs-repo


Start tomcat server from the same command window/shell.

eg:- catalina.sh run
catalina.bat run

After starting the WSO2 Gadget Server, you can access the management console using below URL

https://your-ip:8443/wso2gs/carbon

Tyrell PereraThe 8 Success Criteria For Facebook Page Marketing

Executive Summary

Brands are jumping on the Facebook bandwagon to reach customers. The Society of Digital Agencies reports that more than 45% of senior marketers worldwide named social networks and applications their top priority for 2010. Yet despite the urgency, most brands lack a strategy. Altimeter Group conducted research, and gleaned input from 34 vendors, agencies, and experts, to determine success criteria and develop a roadmap for Facebook page best practices. We found Eight Success Criteria for Facebook page marketing, and then tested the maturity of 30 top brands across six industries.

Our heuristic evaluation revealed that brands fell short half of the brands we reviewed (14 out of 30) did not fully leverage social features to activate word of mouth, the hallmark behavior of social networks. Within this immature landscape, a few brands were on the right track to successfully harnessing Facebook page marketing. Brands like Pampers, Macy's, Kohl's, and AXE increased engagement and activated word of mouth through advocacy and peer-to-peer interactions, or solicited business call to actions that result in transactions. Brands need to stop experimenting in Facebook on their own customers. The criteria and findings in this report provide brands with a roadmap towards Facebook page marketing success.

Facebook: A Platform Marketers Cannot Ignore
Consumers are adopting Facebook at staggering levels. Facebook touts a staggering 500 million users worldwide. Engagement is ripe, with 50% of active users logging on in any given day, connecting to an average of 130 friends.3 Average internet users are spending more time on Facebook per day than on Google, Yahoo, YouTube, Microsoft, Wikipedia and Amazon combined. The attention of consumers has shifted marketers must take action. Consumers lean on each other to make decisions bypassing brands. Consumers trust their friends and family more than other sources of information about products and services, according to a Nielsen study. Another study reports that 60% of Facebook users are more likely to recommend a brand after becoming a fan (Chadwick Martin Bailey). As consumers make decisions directly with each other on Facebook, brands are left out of the mix. Confused, brands need a roadmap or risk experimenting on their own customers. Seventy percent of brands indicate that they planned to increase spending on offsite social media investment, including Facebook in 2010, according to an eConsultancy study.

Yet despite the urgency, brands lack a pragmatic approach. Rather than spin their wheels and waste resources experimenting on customers, brands need guidelines for Facebook page marketing success.


The full report is embedded below and contains references to Nielsen and other relevant survey statistics.


Tyrell PereraThe Biz School Chronicles :: Fire Your Marketing Manager and Hire A Community Manager

Fire Your Marketing Manager and Hire A Community Manager - David Armano - The Conversation - Harvard Business Review
A community manager actively monitors, participates in and engages others within online communities. These communities can be on Twitter, Facebook, message boards, intranets, wherever groups of people come together to converse and interact with each other. A traditional marketing manager is likely to have little experience with this function. Historically, community management developed outside marketing, in areas such as community organizing (politics) or in niche verticals such as the video game or software industry, which are no strangers to digital outposts such as message boards.

Spending four semesters in b-school, makes one knowledgeable enough to sort out genuine marketing efforts from nonsense. The world has enough marketers who talk about social media and blogs without maintaining neither of their own, and throw around phrases like "unique proposition" and "brand image" because they sound and look good. It's about time organisations prioritise their marketing evaluation metrics correctly. From the data I gathered for my thesis, it's clear that generated revenue is THE metric to use. Click-through-rates and visitor counts are fine, but you really can't put them in a balance sheet, can you?



I came across the post from HBR above, on the same day I read the results from the "Old Spice Man" campaign. Why is this relevant? Well, the old spice campaign is a case study of how to mobilize social media to revive a brand. At the time I'm writing this, that particular video on youtube (one of many used in the campaign) had 16,243,818 views. Other videos included odes to Alyssa Milano and Demi Moore, as well as a marriage proposal. In one clip, Mustafa provides the audio a Reddit user requested to construct a do-it-yourself voicemail recording application.

Now that's as viral as it can get. BUT, did it work?

According to Nielsen data provided by Old Spice, overall sales for Old Spice body-wash products are up 11 percent in the last 12 months; up 27 percent in the last six months; up 55 percent in the last three months; and in the last month, with two new TV spots and the online response videos, up a whopping 107 percent. "Our business is on fire," Moorhead says. "We've seen strong results over all of our portfolio. That is the reward for the great work." (Source)

Yes! a 107% increase in sales. Now that's what most can rightly call measurable ROI. But the most important points to take away from this campaign are how they engaged the community and how they identified key influencers within social media circles.

The social media experts initially identified a crop of popular bloggers in key areas like entertainment (Perez Hilton), technology (4chan) and advertising (Adweek's own AdFreak), as well as regular YouTube and Facebook commenters. Some videos were pre-shot, but Tait said Wieden has done the vast majority over the past 48 hours from a studio in Portland, writing and producing them on the fly. (Source)

So that's how it was done. Oh, and quoting that last paragraph made me realise that none of the buzz-word-crazy, wannabe social media marketers I mentioned at the very beginning will know who the hell Perez Hilton is :) <-- That's your litmus test right there. Until next time ....

Silver fish hand catch!!!!







Charitha KankanamgeMessage format transformations with WSO2 ESB

With WSO2 ESB, you can easily convert the format of the messages which passes through. There are situations in which you get SOAP requests but the back end server accepts XML. In these situations, you should convert the SOAP request to XML (POX) before forwarding to the endpoint. This post explains how you can change the format of a SOAP request goes through WSO2 ESB.

Pre-requisites:
Download and install WSO2 ESB-3.X

Step 1
I use WSO2 WSAS as the backend, but you could use any server as you preferred. Start WSO2 WSAS and deploy Axis2Service

Step 2
Start WSO2 ESB and add the following configuration. Here, we specify the message format as POX in the endpoint configuration since we need to convert SOAP message to XML when forwarding it to the endpoint.

<sequence xmlns="http://ws.apache.org/ns/synapse" name="main">
<in>
<send>
<endpoint name="axis2service-epr">
<address uri="http://localhost:9763/services/Axis2Service" format="pox" />
</endpoint>
</send>
<</in>
<out>
<send />
</out>
</sequence>

Step 3
Send a SOAP1.1 message using a tool (SOAPUI, Jmeter, AB etc). If you look at the message transmission between ESB and the endpoint, you will notice the following messages

Request SOAP message:

POST / HTTP/1.1
SOAPAction: urn:echoString
Content-Length: 307
Content-Type: text/xml; charset=UTF-8
Host: 127.0.0.1:8281
Connection: Keep-Alive
User-Agent: Jakarta-HttpComponents-Bench/1.1

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://service.carbon.wso2.org">
<soapenv:Body>
<ser:echoString>
<ser:s>test</ser:s>
</ser:echoString>
</soapenv:Body> </soapenv:Envelope>


Message delivered to the endpoint:

POST /services/Axis2Service HTTP/1.1
Content-Type: application/xml; charset=UTF-8
SOAPAction: urn:echoString
Transfer-Encoding: chunked
Host: 127.0.0.1:9765
Connection: Keep-Alive
User-Agent: Synapse-HttpComponents-NIO

86
<ser:echoString xmlns:ser="http://service.carbon.wso2.org">
<ser:s>test</ser:s> </ser:echoString>0

Similarly, you can convert the message to SOAP1.2 or HTTP GET just by specifying the endpoint format.

Thilina BuddhikaWSO2 Stratos is upgraded..


WSO2 Stratos was upgraded last week, with a set of new features and improvements. This is the first upgrade we did since its first public availability.

SAML 2.0 based single sign-on is one of the main features that we are introducing in this release. With this support, it is possible to sign-in to a single Stratos service and access all other Stratos services without sign-in again. This functionality is not bound to Stratos services. For example, If you have configured other service providers like Google Apps to use Stratos Identity Service as the Identity Provider for Single Sign-on, then it is possible to access all these services seamlessly by providing your credentials only once.

In this upgrade, some revolutionary changes were introduced to the Stratos architecture to improve its performance, scalability and security aspects. One such improvement is adding lazy loading support for Stratos. With this support, the memory footprint of the servers as well as the start-up times are lowered by a great extent.

Apart from that, we have put a lot of effort on the existing Stratos services to improve the user experience as well as the ability to be integrated with other Stratos services and external services.

Our team is currently working on porting the other Carbon products to Stratos while improving the existing Stratos services. WSO2 ESB, BPS, DSS, and BRS will be available as Stratos services very soon.

If you are interested in what is happening in the Stratos space, subscribe to stratos-developer mailing list.

Samisa AbeysingheWhat’s In, What’s Out in Leadership

What’s In, What’s Out in Leadership by Brad Lomenick

Command and Control is out.

Management by position is out.

Wait until you’re “old enough” to really lead is out.

Top Down Hierarchy structure is out.

Power as the ultimate expression of leadership is out.

One career in one industry with one employer in one location is out.

Working your way up the “corporate ladder” is out.

“My way or the highway” is out

Authenticity is in.

Flat organizational structure and systems are in.

Management by skill and know how vs. position is in.

Lead as soon as you are ready is in.

Relational equity as a major asset is in.

Entrepreneurial spirit, boot-strap mentality, and do it yourself attitude is in.

Generosity, sharing, serving, and “giving it away” is in.

Free Agency and “project” based careers are in.

Seasons of calling vs. a Lifetime of calling is in.

Deepal JayasingheSocial networking and our lives

Recent analysis revealed the popularity of social networks, which become much obvious when you watch movies, television or even when you listen to radio. Most application and products try to use Social networks as a way of reaching the people, either they would say meet them on social networks or they might say they have first class support for social networks (e.g., mobile phones). Whether it is good or bad, social networking has become a major part of our lives, everyone tries to share their day to day activities on social networks in addition sharing photos and videos is also an interesting habit. Few years back I used to receive so many emails from my friends about various funny things, now I hardly receive emails on funny stuffs, now the trend is different and everyone uses social network for sharing the funny and entertaining things. Which I think drastically reduces the storage requirements; with the traditional emails we all duplicate the data (if we were to download the emails) now the data stay in one location.

Facebook seems to be doing a very impressive job with the social networks and they define what social network is, they constantly introduce new features and make it part of social networking. A lot of companies including Google try to come to social networking, but most did not succeed. As Google does not have any completion for search, emails, youtube and maps from anyone else, Facebook and twitter are leading the social networking. Due to popularity of the Facebook it has diverse set of user community and which has become a very good advertisement media for them, in fact that is something Google needs to be aware of.

Chanaka JayasenaHow to randomly displaying images on page refresh

This script display images in "imageRot" div randomly on every page load.

Replace "quote-xx.gif" with your image name.



<div id="imageRot"></div>
<script type="text/javascript">
var images = new Array();
images.push("quote-01.gif");
images.push("quote-02.gif");
images.push("quote-03.gif");
images.push("quote-04.gif");
images.push("quote-05.gif");
images.push("quote-06.gif");
images.push("quote-07.gif");
var random = Math.floor(Math.random() * 7);
var imageRot = document.getElementById("imageRot");
imageRot.innerHTML = '<img src="images/' + images[random] + '" alt="">';
</script>

Srinath PereraMulti-Tenant SOA Middleware for Cloud Computing

Following are the slides for my talk on WSO2 carbon multi-tenancy architecture at Cloud 2010, two weeks back. The paper describes the WSO2 Statos multi-tenancy Architecture .

Multi-Tenant SOA Middleware for Cloud Computing


The full paper can be found here. The citation of the paper is given below.
Afkham Azeez, Srinath Perera, Dimuthu Gamage, Ruwan Linton,  Prabath Siriwardana, Dimuthu Leelaratne, Sanjiva Weerawarana, Paul Fremantle, "Multi-Tenant SOA Middleware for Cloud Computing" 3rd International Conference on Cloud Computing, Florida, 2010.
Abstract
Enterprise IT infrastructure incurs many costs ranging from hardware costs and software  licenses/maintenance costs to the costs of monitoring, managing, and maintaining IT infrastructure. The recent advent of cloud computing offers some tangible prospects of reducing some of those costs; however, abstractions provided by cloud computing are often inadequate to provide major cost savings across the IT infrastructure life-cycle. Multi-tenancy, which allows a single application to emulate multiple application instances, has been proposed as a solution to this problem. By sharing one application across many tenants, multi-tenancy attempts to replace many small application instances with one or few large instances thus bringing down the overall cost of IT infrastructure. In this paper, we present an architecture for achieving multi-tenancy at the SOA level, which enables users to run their services and other SOA artifacts in a multi-tenant SOA framework as well as provides an environment to build multi-tenant applications. We discuss architecture, design decisions, and problems encountered, together with potential solutions when applicable. Primary contributions of this paper are motivating multitenancy, and the design and implementation of a multitenant SOA platform which allows users to run their current applications in a multi-tenant environment with minimal or no modifications.

Paul FremantleTaking College loyalty a bit far?

A few weekends ago I was at the Balliol College family day and they had a face painter. I got her to do a large college arms on my face, which came out quite well! Thanks to Jeremy for the picture.
Posted by Picasa

Tyrell PereraMurder: Fast datacenter code deployment using BitTorrent

Twitter - Murder Bittorrent Deploy System from Larry Gadea on Vimeo.



The Twitter Engineering Blog: Murder: Fast datacenter code deploys using BitTorrent
It was time for something completely different, something decentralized, something more like.. BitTorrent..
running inside of our datacenter to quickly copy files around. Using
the file-sharing protocol, we launched a side-project called Murder and
after a few days (and especially nights) of nervous full-site
tinkering, it turned a 40 minute deploy process into one that lasted
just 12 seconds!

Murder (which by the way is the name for a flock of crows) is a combination of scripts written in Python and Ruby to easily deploy large binaries throughout your company’s datacenter(s). It takes advantage of the fact that the environment in a datacenter is somewhat different from regular internet connections: low-latency access to servers, high bandwidth, no NAT/Firewall issues, no ISP traffic shaping, only trusted peers, etc. This let us come up with a list of optimizations on top of BitTornado to make BitTorrent not only reasonable, but also effective on our internal network. Since at the time we used Capistrano for signaling our servers to perform tasks, Murder also includes a Capistrano deploy strategy to make it easy for existing users of Capistrano to convert their file distribution to be decentralized. The final component is the work Matt Freels (@mf) did in bundling everything into an easy to install ruby gem. This further helped get Murder to be usable for more deploy tasks at Twitter.

Now that's a cool idea. The code is open source and can be found at http://github.com/lg/murder.


Tyrell PereraConfident, But Not Really Sure

A Great Boss is Confident, But Not Really Sure - The Conversation - Harvard Business Review
My favorite track on Tom Petty's 2006 album Highway Companion is a song called "Saving Grace." About halfway through, he closes off a verse by singing: "You're confident but not really sure." That's a state of mind that sounds paradoxical, but at times it really is true. In fact, it's the essence of what developmental psychologist John Meacham called the "attitude of wisdom." And it's a good description of some bosses I know, who strike a healthy balance between knowing and doubting.
A good companion read for this is "Confident But Not Really Sure: A JetBlue Boss and Other Examples of Wisdom". It's a follow up post with examples.



Tyrell PereraUpcoming Webinar :: Confessions of a “Gadget-holic”

On Wednsday, 14th July 2010 I will be conducting a one hour webinar explaining Enterprise App Stores as described in a previous post here. We will run this during two time slots. 9 AM - 10 AM (GMT) and 10 AM - 11 AM (PDT). Here's a sneak peak at the topics I plan to cover;
  • App stores - Components of an App Store echo system and how they interact together
  • App Stores in the Enterprise - Self Service IT
  • Mashups - How they can provide APIs to App developers and facilitate code re-use
  • Google gadgets - The Apps that will power your Enterprise App Store
  • The Enterprise Gadget Repository - The App Directory that powers your Enterprise App Store
  • Tips and tricks that may come in handy ....
So if you haven't already, register and drop in at a convenient time slot depending on your time zone :)

UPDATE: The recorded webinar and slides are here.


Krishantha SamaraweeraHow to install oracle XE on ubuntu 10.04 64 bit

Recently I had to go though the pain of installing oracle on Ubuntu again in my new laptop. Two years back I did the same installation on Ubuntu 7.10 and cost me two days to complete the installation. But this time things are rather easy.

So here we go.

Before installing
1. sudo apt-get install bc

Then I installed the packet.
sudo dpkg --force-architecture -i oracle-xe_10.2.0.1-1.0_i386.deb

Then I configured the system:
sudo /etc/init.d/oracle-xe configure

Then follow the below steps

1. export ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server
2. export ORACLE_SID=XE
3. export PATH=$ORACLE_HOME/bin:$PATH
4. sudo apt-get install ia32-libs
5. sudo /etc/init.d/oracle-xe start

If you get bash: /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin/sqlplus: No such file or directory error then killer might be missing step 4
sudo apt-get install ia32-libs

References :
[1] http://littlebrain.org/2008/05/12/how-to-install-oracle-xe-in-ubuntu-64-bit/

Guide to install oracle using apt get
[2] http://www.webxpert.ro/andrei/2009/05/31/instal-oracle-10g-xe-on-ubuntu-server-904-jaunty-jackalope/

Damitha Kumaragevimperator

I have been using firefox in vimperator mode for some time. It is an extremely fun way to browse the web for an vi addict. Once a vi user, get addict to it I’m sure he will never go back to usual firefox mode using mouse. I can navigate pages and links, add and search [...]

Charitha KankanamgeHow to use POST_TO_URI property in WSO2 ESB

Until recently I had some doubts about using POST_TO_URI property within WSO2 ESB configuration. Finally, I think I understood the true purpose of it and used it correctly.

According to WSO2 ESB parameters catelog, POST_TO_URI property makes the outgoing URL of the ESB a complete URL and it is important when sending the messages through a proxy server.
Lets see how this property can be used in message mediation when a HTTP proxy server is used.

Step 1

As I explained in a previous post, you are supposed to configure WSO2 ESB to forward messages through a HTTP proxy server.

Step 2

Now, add the following sequence (or any message pass through sequence). (I used a service called "Axis2Sesrvice" which is deployed on WSO2 WSAS as the endpoint and I used Apache server as the proxy)

<sequence xmlns="http://ws.apache.org/ns/synapse" name="main">
<in>
<send>
<endpoint name="endpoint_urn_uuid_1286CEB97BC8A170468445150995919829308689">
<address uri="http://localhost:9764/services/Axis2Service/" />
</endpoint>
</send>
</in>
<out>
<send />
</out>
</sequence>

Step 3

Send a message to ESB using a client. You will notice that the message transmission is failed. If you look at the apache server log, you will notice something similar to the below.

127.0.0.1 - - [19/Jul/2010:14:19:30 +0530] "POST /services/Axis2Service/ HTTP/1.1" 404 220

Here, you can see that, POST message does not contain the full service URL hence the proxy server is unable to forward the message to the endpoint.

Step 4

Now update the above sequence with including POST_TO_URI property as follows.

<sequence xmlns="http://ws.apache.org/ns/synapse" name="main">
<in>
<property name="POST_TO_URI" value="true" scope="axis2" type="STRING" />
<send>
<endpoint name="endpoint_urn_uuid_1286CEB97BC8A170468445150995919829308689">
<address uri="http://localhost:9764/services/Axis2Service/" />
</endpoint>
</send>
</in>
<out>
<send />
</out>
</sequence>

Send a message again. This time, the message transmission will be successful. You will find the following entry in apache log. This proves that the message is correctly forwarded to the endpoint through the proxy server.

127.0.0.1 - - [19/Jul/2010:14:57:25 +0530] "POST http://localhost:9764/services/Axis2Service/ HTTP/1.1" 200 278

Yumani RanaweeraHow to install WSO2 cApp in eclipse

Am using eclipse-jee-galileo-linux-gtk.tar.gz for this. and a milestone release of WSO2 cApp plugin, which can be downloaded from here.

1. Firstly extract you eclipse distribution and launch it.

2. Then Go to Help menu and select "Install Software"


3. Click on the 'Add' button at the top corner of the 'Install' DBox to add the location where the software resides.




4. In the 'Add site' DBox, click on 'Archive' button and navigate to the location where you downloaded WSO2 cApp plugin (wso2-eclipse-ide-tools-1.0.0.M11.zip).

5. When the achive is added, all the software available in it will appear in the small text area below it.
Remember : You need to have "group items by category" checkbox unchecked.



4. Out of the above list, select "WSO2 Carbon Studio Feature" and press Next to proceed and move on until completion.

That's it. Now you have WSO2 cApp integrated to eclipse IDE.

Samisa AbeysingheWSO2 Business Activity Monitor 1.1.0 Released!

Date : 16th July 2010

WSO2 Business Activity Monitor development team is pleased to announce the release of version 1.1.0 of WSO2 Business Activity Monitor

WSO2 Business Activity Monitor (WSO2 BAM) is a tool designed to exercise Business Activity Monitoring (BAM). WSO2 BAM is intended to serve the needs of both business and IT domain experts to monitor and understand business activities within a SOA deployment. It is specifically designed for monitoring SOA deployments, and can be extended to cater for other general monitoring requirements as well.

WSO2 BAM is powered by WSO2 Carbon, the SOA middleware component platform.

License

WSO2 BAM is an open source software product and is release under Apache Software License v2.0.

Downloads

You can download WSO2 BAM release artifacts from http://wso2.org/downloads/bam.

New Features in This Release

  • Support for Oracle DBMS
  • Error category monitoring for WSO2 ESB mediation data
  • Improvements to analytics summary calculations, storage and visualization
  • Support for deployment on JBoss, Apache Tomcat, and WebLogic Application servers
  • Improved P2 based provisioning and feature management support
  • Support for deleting Monitored Servers

Features

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

Project Resources

Installation and Running

  1. Download the binary distribution zip file
  2. Extract the downloaded zip file
  3. Go to the bin directory in the extracted folder
  4. On Linux/Unix, run wso2server.sh script. On Microsoft Windows, run wso2server.bat file.
  5. Point your browser to the URL https://localhost:9443/carbon
  6. Use username admin, and password admin to login as the administrator.
    NOTE: It is strongly recommended that you change your administrator password from the admin to a more secure one at this point. To do this click on 'Configure->User Managment' link on the left menu.
  7. Add servers to be monitored using left menu 'Configure->Monitored Servers'.
  8. Monitor data using various dashboards present under 'Dashboard' section of left menu.
    NOTE: You might have to wait some time till there is data available from the servers being monitored. To see summary data, you have to wait at least one hour, before the first summary run happens.
  9. Have a look at the documentation for more information on data collection and monitoring capabilities of WSO2 BAM

Reporting Issues

Issues can be reported using the public JIRA available at https://wso2.org/jira/browse/BAM

Contact us

WSO2 Business Activity Monitor developers can be contacted via the mailing lists:

For Users:bam-user@wso2.org
For Developers:carbon-dev@wso2.org

Alternatively, questions can also be raised in the WSO2 Business Activity Monitor forum:

Forum http://wso2.org/forum/967

Support

We are committed to ensuring that your enterprise middleware deployment is completely supported from evaluation to production. Our unique approach ensures that all support leverages our open development methodology and is provided by the very same engineers who build the technology.

For more details and to take advantage of this unique opportunity please visit http://wso2.com/support/

For more information about WSO2 Business Activity Monitor please see http://wso2.com/products/bam. Visit the WSO2 Oxygen Tank developer portal for additional resources.


We welcome your feedback and would love to hear your thoughts on this release of WSO2 BAM.

WSO2 BAM Development Team

Yumani RanaweeraInvoking Web services using stubs

I've been using Keith's tutorial on "Invoking Web Services from a Mashup" when testing the stub generating and use of generated stub features in WSO2 Mashup Server.

This note is an elaborated version of stubs part of that article, containing the same information in a more detail manner where a less-techy person like me can follow effortlessly.


Why do you need a stub :
Stub is used to generate the soap message for us to send the request and recieve the response over the wire.
It is a Java class that is statically bound to a service endpoint interface. A stub, or a client proxy object, defines all the methods that the service endpoint interface defines. Therefore, the client can invoke methods of a web service directly via the stub. The advantage of this is that it is simple and easy to code. The disadvantage is that the slightest change of web service definition lead to the stub being useless... and this means the stub must be regenerated. It is advisable to use the static stub technique if you know that the web service is stable and is not going to change its definition. Static stub is tied to the implementation. In other words, it is implementation-specific.



Invoking an external service in asynchronous manner
----------------------------------------------------------------------

I'll be invoking a service residing externally in http://www.webservicex.net. WSDL url of this is http://www.webservicex.net/CurrencyConvertor.asmx?WSDL.


1. Go to stubs generator in WSO2 Mashup Server 2.0.0 and select to generate an E4X stub for the above wsdl.




2. Copy and paste this stub to a note pad.

3. Deploy the following service in the Mashup Server.

system.include("currencyConvertorStub.js"); 

convertionRateUsingStub.inputTypes={"fromCurrency" : "string", "toCurrency" : "string"};
convertionRateUsingStub.outputType="string";
function convertionRateUsingStub(fromCurrency, toCurrency){
var rate = CurrencyConvertor.ConversionRate(fromCurrency, toCurrency);
return "The conversion rate is " + rate;
}

4. When a service is deployed in the mashup server a folder with the syntax 'servicename.resources' will be created in the MASHUP_HOME/repository/scripts folder.
So if our service above was deployed as "CurrenctConversion.js", there will be a folder called "CurrenctConversion.resources".


5. Now go to the stub that you pasted in to a note pad, save it in MASHUP_HOME/repository/scripts/CurrenctConversion.resources as "currencyConvertorStub.js"

6. Access the tryit of "CurrenctConversion" javascripts service.

7. It'll be doing the currency coversion using the stub generated from the WSDL. ????/



Invoking an external service in synchronous manner
----------------------------------------------------------------------

I'll be invoking the same service using http://www.webservicex.net/CurrencyConvertor.asmx?WSDL.

1. Go to stubs generator in WSO2 Mashup Server and select to generate an E4X stub for the above service.

2. Copy and paste this stub to a note pad.


3. Deploy the following service in the Mashup Server.

system.include("currencyConvertorStub.js");

convertionRateUsingStubAsync.inputTypes={"fromCurrency" : "string", "toCurrency" : "string"};
convertionRateUsingStubAsync.outputType="string";
function convertionRateUsingStubAsync(fromCurrency, toCurrency){
CurrencyConvertor.ConversionRate.callback = success;
CurrencyConvertor.ConversionRate.onError = failure;
CurrencyConvertor.ConversionRate(fromCurrency, toCurrency);
return "Invoked the ConversionRate operation in a async manner";
}

success.visible=false;
function success(ConversionRateResponse) {
system.log("The response of ConversionRate was : " + ConversionRateResponse);
}

failure.visible=false;
function failure(error) {
system.log("Error occured while calling ConversionRate, Reason is : " + error.reason);
}


4. When a service is deployed in the mashup server a folder with the syntax 'servicename.resources' will be created in the MASHUP_HOME/repository/scripts folder.
So if our service above was deployed as "CurrenctConversion_sync.js", there will be a folder called "CurrenctConversion_sync.resources".


5. Now go to the stub that you pasted in to a note pad, save it in MASHUP_HOME/repository/scripts/CurrenctConversion.resources as "currencyConvertorStub.js"


6. Access the tryit of "CurrenctConversion_sync" javascripts service.




Invoking a service secured using Username Token authentication
-----------------------------------------------------------------------------------------

1. Sign-in to MS console.

2. Create a service (usernameTokenService.js) using the source below ;

demo.inputTypes={"firstParam" : "string" , "secondParam" : "string"};
demo.outputType="string";
function demo(firstParam, secondParam){
return "user " + request.authenticatedUser + " called the demo function with params " + firstParam + " and " + secondParam;
}

3. Secure the service with Username Token
This can be done from Manage > Services > List > [ServiceName] > Service Dashboard > Security

4. Create another service (invokeSecuredService.js) using the source below;

system.include("usernameTokenServiceStub.js");

invokeSecuredService.inputTypes={"firstParam" : "string" , "secondParam" : "string"};
invokeSecuredService.outputType="string";
function invokeSecuredService(firstParam, secondParam) {
usernameTokenService.username = "yourUsername";
usernameTokenService.password = "yourPassword";
return usernameTokenService.demo(firstParam, secondParam);
}

5. Generate the stub for "usernameTokenService" service and save it as usernameTokenServiceStub.js



6. Copy it to the .resource folder of the "invokeSecuredService" service we created in step 4

7. tryit? the second service (invokeSecuredService).

Yumani RanaweeraNew release of WSO2 product family !!!!

Its been a little more than a week now. But I need to make a note of it. WSO2 released new versions of five of its products on 09th Oct.

It include;
WSO2 WSAS 3.1.1
WSO2 Governance Registry 3.0.1
WSO2 ESB 2.1.1
WSO2 IS 2.0.1
WSO2 Mashup Server 2.0.0

The release notes of Mashup Server and Identity Server (the ones that I talk about most) are given below.

WSO2 Identity Server 2.0.1
The WSO2 Identity Server team is pleased to announce the release of version 2.0.1 of the Open Source WSO2 Identity Server (IS).

IS 2.0.1 release is available for download at [1].

This is based on revolutionary the WSO2 Carbon [2] framework, Middleware a la carte'.

All the major features have been developed as pluggable Carbon components.

New Features
-------------------
1. SAML 2.0 Token Profile support
2. Passive STS
3. Equinox P2 based provisioning support
4. Improved Support for deploying on top of WebSphere, WebLogic, and JBoss.
5. Various bug fixes and enhancements including architectural improvements to Apache Axis2, Apache Rampart, Apache Sandesha2, WSO2 Carbon and other projects

Other Key Features
---------------------------
1. Entitlement Engine with XACML 2.0 support.
2. Claim based Security Token Service.
3. Extension points for SAML assertion handling.
4. OpenID Provider
5. Information Card Provider

How to Run
-------------
1. Extract the downloaded zip.
2. Go to the bin directory in the extracted folder.
3. Run the wso2server.sh or wso2server.bat as appropriate.
4. Point your browser to the URL https://localhost:9443/carbon
5. Use "admin", "admin" as the user name and password.
6. If you need to start the OSGi console with the server use the property -DosgiConsole when starting the server

Known issues
---------------
All the known issues have been filed here [3]. Please report any other issues you find as JIRA entries.

Contact us
-----------
WSO2 Identity Server developers can be contacted via the mailing lists:
For Users: carbon-user@wso2.org
For Developers: carbon-dev@wso2.org

Alternatively, questions can also be raised in the Identity Server forum at http://wso2.org/forum/308

Training
---------
WSO2 Inc. offers a variety of professional Training Programs, including training on general Web services as well as WSO2 Identity Server,Apache Axis2, Data Services and a number of other products. For
additional support information please refer to http://wso2.com/training/course-catalog/


Support
--------
WSO2 Inc. offers a variety of development and production support
programs, ranging from Web-based support up through normal business
hours, to premium 24x7 phone support. For additional support information
please refer to http://wso2.com/support/


For more information on WSO2 Identity Server, visit the WSO2 Oxygen Tank[4].

Thank you for your interest in WSO2 Identity Server.

-The WSO2 Identity Server team

[1]: http://wso2.org/downloads/identity
[2]: http://wso2.org/projects/carbon
[3]: https://wso2.org/jira/browse/CARBON
[4]: http://wso2.org


WSO2 Mashup Server 2.0.0


The WSO2 Mashup Server team is pleased to announce the release of version 2.0.0 of the Open Source WSO2 Mashup Server.

Downloads are available at http://wso2.org/downloads/mashup

For a complete list of project resources including SVN, Mailing lists, Forums, JIRA and Tutorials visit http://wso2.org/projects/mashup

"Create, deploy, and consume Web services Mashups in the simplest fashion."

The WSO2 Mashup Server is a powerful yet simple and quick way to tailor Web-based information to the personal needs of individuals and organizations. It is a platform for acquiring data from a variety of sources including Web Services, HTML pages, feeds and data sources, and process and combine it with other data using JavaScript with E4X XML extensions. The result is then exposed as a new Web service with rich metadata and artifacts to simplify the creation of rich user interfaces


Key Features
---------------
* Hosting of mashup services written using JavaScript with E4X XML extension
    - Simple file based deployment model
* JavaScript annotations to configure the deployed services
* Auto generation of metadata and runtime resources for the deployed mashups
    - JavaScript stubs that simplify client access to the mashup service
    - Code templates for developing rich HTML or Google Gadget interfaces
    - TryIt functionality to invoke the mashup service through a web browser
    - WSDL 1.1/WSDL 2.0/XSD documents to describe the mashup service
    - API documentation
* Ability to bundle a custom user interface for the mashups
* Many useful Javascript Host objects that can be used when writing mashups
    - WSRequest: invoke Web services from mashup services
    - File: File storage/manipulation functionality
    - System: Set of system specific utility functions
    - Session: Ability to share objects across different service invocations
    - Scraper: Extract data from HTML pages and present in XML format
    - APPClient: Atom Publishing Protocol client to retrieve/publish Atom
                 feeds with APP servers
    - Feed: A generic set of host objects to transparently read and create
            Atom and RSS feeds
    - Request: Ability get information regarding a request received
* Support for recurring and longer-running tasks
* Support for service lifecycles
* Ability to secure hosted mashups using a set of commonly used security scenarios
* Management console to easily manage the mashups


New Features In This Release
------------------------------
The 2.0 version of the Mashup Server is built on top of the Award Winning WSO2 Carbon Platform. All the major features have been developed as pluggable Carbon components.


Installation & Running
-----------------------
1. extract the downloaded zip file
2. Run the wso2server.sh or wso2server.bat file in the bin directory
3. Once the server starts, point your Web browser to
   https://localhost:9443/carbon/

For more details, see the Installation Guide


System Requirements
----------------------
1. Minimum memory - 256MB
2. Processor      - Pentium 800MHz or equivalent at minimum
3. The Management Console requires full Javascript enablement of the Web browser
   NOTE: On Windows Server 2003, it is not allowed to go below the medium security level in Internet Explorer 6.x.

For more details see
http://wso2.org/wiki/display/carbon/System+Requirements


WSO2 Mashup Server Binary Distribution Directory Structure
---------------------------------------------------------------
  CARBON_HOME  
       |-bin      
       |-conf   
       |-database
       |-dbscripts
       |-docs     
       |-lib      
       |-logs
       |-repository     
       |---dataservices            
       |---scripts      
       |---services
       |-resources      
       |---security
       |-tmp      
       |-webapps      
       |-- LICENSE.txt
        |-- README.txt
        |-- INSTALL.txt
        |-- release-notes.html
   

   - bin
      Contains various scripts .sh & .bat scripts

    - conf
      Contains configuration files

   - database
     Contains the database

    - lib
      Contains the basic set of libraries required to startup WSO2 Mashup Server in standalone mode

    - logs
      Contains all log files created during execution

    - repository
      The repository where Carbon artifacts & Axis2 services and modules deployed in WSO2 Mashup Server are stored. In addition to this other custom deployers such as javascript, dataservices, axis1services and pojoservices are also stored.
     
            - dataservices
              Contains the Data Services hosted in the Mashup Server.
             
            - scripts
              Contains the Javascript Services (Mashups) hosted in the Mashup Server.
             
            - services
              Contains the Java Services hosted in the Mashup Server.

    - resources
      Contains additional resources that may be required

    - tmp
      Used for storing temporary files, and is pointed to by the java.io.tmpdir System property

    - webapps
      Contains the WSO2 Mashup Server webapp. Any other webapp also can be deployed in this directory

    - LICENSE.txt
      Apache License 2.0 under which WSO2 Mashup Server is distributed.

    - README.txt
      This document.

    - INSTALL.txt
          This document will contain information on installing WSO2 Mashup Server

    - release-notes.html
      Release information for WSO2 Mashup Server 2.0


Training
---------
WSO2 Inc. offers a variety of professional Training Programs, including training on general Web services as well as WSO2 Mashup Server, Apache Axis2, Data Services and a number of other products.

For additional support information please refer to http://wso2.com/training/course-catalog/


Support
---------
WSO2 Inc. offers a variety of development and production support programs, ranging from Web-based support up through normal business hours, to premium 24x7 phone support.

For additional support information please refer to http://wso2.com/support/

For more information on WSO2 Mashup Server, visit the WSO2 Oxygen Tank (http://wso2.org)


Enjoy the WSO2 Mashup Server,

The WSO2 Mashup Server Team ~~~~

Yumani RanaweeraCloud and open source meet to test Web apps

Start-up Sauce Labs receives funding to support open-source Selenium project on-premise and in the cloud.

Blog post by Dave Rosenberg on Software, Interrupted.
http://news.cnet.com/8301-13846_3-10437699-62.html

Yumani RanaweeraDeploying WSO2 Carbon 2.0.x in IBM WebSphere Application Server 6.1

I have converted one of the past blog posts into an article and its now published in WSO2 Oxygen Tank -Library.

Its titled as "Deploying WSO2 Carbon 2.0.x in IBM WebSphere Application Server 6.1". Is available here.

Yumani RanaweeraAccessing a datafile through Selenium RC

In our testing most of us require to call data from a data storage and execute our tests to confirm various validations work as expected, different conditions are met etc.

Below is a code snippet that I used in calling data used in a .txt file in validating a simple test in user name password based sign-in process. I was on Selenium RC/JUnit/Java platform in this.

public class SignIn extends SeleneseTestCase {

public void setUp() throws Exception {
setUp("https://localhost:9443/carbon/", "*chrome");
}

public void testSignInValdation() throws Exception {
BufferedReader in = null;
InputStreamReader inputStream = null;

inputStream = new InputStreamReader(new FileInputStream("C:" + File.separator + "signin.txt"));
in = new BufferedReader(inputStream);
String line = null;

while ((line = in.readLine()) != null) {
System.out.println("password: " + line);
selenium.open("/carbon/admin/login.jsp");
selenium.waitForPageToLoad("30000");
selenium.type("txtUserName", "yumani");
selenium.type("txtPassword", line);
selenium.click("//input[@value='Sign-in']");
selenium.waitForPageToLoad("30000");
}
}
}

Yumani RanaweeraAgile or waterfall?

Here's a short video which explains the difference between agile and waterfall models.

Yumani RanaweeraCreating a MySQL database for WSO2 Carbon 3.x.x products

WSO2 Carbon products have an inbuilt H2 database. Additionally the Carbon framework allows you to switch to the databases such as Oracle, MSSQL,MySQL, Derby, DB2.

You can easily switch between these databases by;
- creating a database schema within the relevant RDBMS
- point the configuration scripts to that db
- copy the drivers
- start the server with -Dsetup
I will describe these steps in a separate post.

This post is about how you can manually configure the database. I will be using MySql in my illustration. And I will be using WSO2 Identity Server 3.0 -alpha releases for this.


Creating MySQL database for WSO2 Carbon
-----------------------------------------------------------------

1. Download a wso2 identity server 3.0 alpha release

2. Navigate to the location where you have the mysql script. i.e. CARBON_HOME/dbscripts

3. Open a command prompt from that location and login to mysql from cmd prompt
mysql -u root -p

4. Create a database. Create user and grant access
create database regdb;
GRANT ALL ON regdb.* TO regadmin@localhost IDENTIFIED BY "regadmin";

6. Run the mysql.sql script. This will configure the database.
use regdb;
source mysql.sql


7. Copy the database driver to CARBON_HOME\repository\components\lib. I used mysql-connector-java-5.1.7-bin.jar, which is the official JDBC driver for MySQL. It can be downloaded from here.



8. Configure usermanager and registry scripts, which reside in CARBON_HOME/repository/conf

registry.xml
<currentDBConfig>mysql-db</currentDBConfig>
<dbConfig name="mysql-db">
<url>jdbc:mysql://localhost:3306/regdb</url>
<userName>regadmin</userName>
<password>regadmin</password>
<driverName>com.mysql.jdbc.Driver</driverName>
<maxActive>80</maxActive>
<maxWait>6000</maxWait>
<minIdle>5</minIdle>
</dbConfig>

user-mgt.xml
<Database>
<URL>jdbc:mysql://localhost:3306/regdb</URL>
<UserName>regadmin</UserName>
<Password>regadmin</Password>
<Dialect>mysql</Dialect>
<Driver>com.mysql.jdbc.Driver</Driver>
</Database>

Yumani RanaweeraTesting Cloud Services

WSO2 Stratos is a comprehensive, powerful PaaS solution which, WSO2 released newly. It is based on revolutionary Carbon platform and is a self-serving, multi-tenant, elastic runtime for private and public cloud infrastructures.

In this new deployment, Stratos has enabled WSO2 products as services. With it whole WSO2 middle-ware platform is available in the cloud as services.

So how was these services tested. As Paul has mentioned in one of his blog posts (Cloud Native), there are a set of technical attributes that the team take account of, to work well in a cloud environment. Out of these, Mutlitanency and Self servicing abilities were tested with more emphasis in this alpha release.


Self Servicing
Self-service means creating and managing your own tenant in the Stratos application. With this one could register his own organization (tenant) and manage the services, users within it.

How you do this:

1. Access Stratos from https://cloud.wso2.com/ and you will have Stratos Manager who is the entry point to wso2 cloud services.
2. Register a tenant in Startos Manager by going through the registration process that is available there in main page. This is a very simple process where you are asked to give only the domain name, administrator's credentials and security captcha.

After a successful registration, you can sign-in to Stratos using the admin account which would be admin_name@domainname. For an example, if I have my domain as 'ranaweera.lk' and administrator as 'admin', I can sign-in as 'admin@ranaweera.lk'

So that's about registering. This initial user is called the tenant-admin. After registering the organization, the tenant-admin can;
 - create users within it,
 - create various roles and assign users to them,
 - enable\disable services.

Tenant-users can;
- login and access the enabled cloud services,
- deploy there own web services,
- deploy mashups,
- apply security, change policies, apply throttling, engage modules etc to these services.

Few illustrative cases on this are;




Managing users:
From Stratos Manager, if you access 'Users & Roles' option, it allows you to add new users and roles in addition to existing admin user and role. While adding roles you can select the set of permissions you need to assign to a certain role. A user can be assigned one or many roles and vice versa. This is similar to the user management functionality we already have in all WSO2 products.



These users who were added above, are called 'tenant users'. A tenant user can login to 'Stratos Manager' from https://cloud.wso2.com/.  The user credentials that the admin assigned at the time the user was created must be used here. After signing-in to Stratos Manager, he will see all the cloud services that the tenant-admin has enabled for the tenant.




He then can sign-in to the cloud services using the same credentials.


Theming:
The tenant admin also can update the theme of his tenant by going to 'Theme' menu. There are few default themes as well as a 'customize' option.

A theme  that is applied at the Cloud Manager level should be propagate to all the cloud services within that tenant.




Billing:

This feature lets the billing information for the tenant viewable by the admin role. This component is still in development stages, so there'll be more to be said under this in future..


All the above can be done without a third party involvement making it 'self serving'. It is for the tenant administrator to manage with his tenant users.




Multitanancy

Mutlitanancy within Stratos is the ability it provides multiple organizations to register ,  Stratos Manager and work simultaneously, within their own domain. Like in our real world scenarios here the details of one organization should be private and shared only within it.

Lets simulate a step by step procedure of creating this environment;

1. First create a tenant (tenant A) and add users to it.
2. Create another tenant (tenat B) and add user to it too.
The tenant admin and users of tenant A could only access\view\edit services within their tenant. The admin and tenant users in tenant B are totally blind about the existent of tenant A.

We can use this environment to run through scenarios such as below;

Multitanancy in mashups (js services):
If the Cloud Mashup Sever was enabled as a service and tenant admin sign-in to it. He can create a javascript service in it. Lets say our admin has created a service which scrapes updates from a site and sends emails to a set of recipients. This service should be available for other tenant users to view and use. They should be able to edit it depending on the permissions granted by the admin. This mashup should appear in the service list with the author's name.



Now if you sign-in to tenant-B. Neither the admin nor the users of tenant B can access or see the services created by tenant A users. Because the two domains are two seperate entities.
Of course there are a set of system samples which will be available for all users by default. These are deployed under 'system' user.


Multitanancy in task-scheduling:

If a user\admin from a tenant schedule a task, (This is available in Cloud Mashup Server, from Configure > Scheduled Tasks menu), it will be visible and operational only within the tenant which originated it.


Multitanancy in gadgets:

In the Cloud Gadget, it allows the users to add gadgets of their desire. It lets him design their own gadget environment by adding\editing\deleting new tabs, new gadgets in their environment. All these customization done by a user (may it be the tenant user or tenant admin) is strictly for that particular user's account.

And, also these settings are not shared among tenants!

Cloud Gadget also lets you a community feature which facilitates gadgets' rating and commenting. A comment or a rating submitted by one tenant user can be viewable by other tenant users. But they are not shared with another tenant.

There's also a feature which gives you an update on the number of users who are using a particular gadget at a given time. This count is based on the users who use the gadget within a given tenant. It is not shared among tenants.



Mutlitenancy in entitlement policies:
You can create entitlement policies by going to Cloud Identity. These policies that you create in your tenant will be used only within it. And yes, these xcml policies can be used among the could services you have within your tenant.

For an example you should be able to do what is said in here.


Multitenancy in keystores/relying parties:

Again, Cloud Identity lets you store your relying party certificates and keystores. Similar to other scenarios these also tenant specific and blind to other tenants.



Likewise there's more and more scenarios you get to exercise and of course 'apply' in real world using WSO2 Stratos, which has whole of WSO2 middleware platform available in a single environment as services. Instead of having several servers started separately, here you have all the servers available at once. You can intercommunicate with them much easily.

Srinath PereraTowards Improved Data Dissemination of Publish-Subscribe Systems

Last week I presented the paper Towards Improved Data Dissemination of Publish-Subscribe Systems at ICWS 2010. It is based on work done with Rmaith and Dinesh on improving WS-Messenger from Indiana as a part of Open Grid Computing Environment Project.

Abstract: with the proliferation of internet technologies, publish/subscribe systems have gained wide usage as a middleware. However for this model, catering large number of publishers and subscribers while retaining acceptable performance is still a challenge. Therefore, this paper presents two parallelization strategies to improve message delivery of such systems. Furthermore, we discuss other techniques which can be adopted to increase the performance of the middleware. Finally, we conclude with an empirical study, which establishes the comparative merit of those two parallelization strategies in contrast to serial implementations.

Mainly it discusses how to implement parallel message delivery in a Pub/Sub broker while keeping the partial order of events. Slides are given below.

Charitha KankanamgeHow to configure WSO2 ESB to route messages through a proxy server

When using WSO2 ESB, there are situations in which you need to talk to an endpoint which sits behind a proxy. In such cases, you should configure the ESB transport sender to forward the messages to the proxy server.
In order to do so, you just need to add the following two parameters as child elements of <transportSender name="http" class="org.apache.synapse.transport.nhttp.HttpCoreNIOSender">

<parameter name="http.proxyHost" locked="false">localhost</parameter>
<parameter name="http.proxyPort" locked="false">8090</parameter>

Note:- Change the proxy port and host according to your environment

Damitha KumarageWSO2 Web Services Framework for PHP v2.1.0 Released

WSO2 Web Services Framework for PHP v2.1.0 Released ===================================================== We are pleased to announce the release of WSO2 WSF/PHP 2.1.0 WSO2 Web Services Framework for PHP (WSO2 WSF/PHP), is an open source, enterprise grade, PHP extension for providing and consuming Web Services in PHP. WSO2 WSF/PHP is a complete solution for building and deploying Web [...]

Dimuthu GamageWSO2 Web Services Framework for PHP 2.1.0 Released

WSO2 just released a newer version of the popular web services framework for php (WSF/PHP). It has lot of bug fixes + performance improvement.  And it now support PHP 5.3. So you can use wsf/php with the latest php version.

You can download the new release from http://wso2.org/downloads/wsf/php.

Danushka MenikkumburaWSO2 Web Services Framework for PHP - 2.1.0 Released!

Major Changes Since Last Release
* API Improvements for WS-Addressing, WS-Security
* Compatibility changes for PHP 5.3
* Enabled built-in Guththila XML parser
* Performance enhancements

Download from:
http://wso2.org/downloads/wsf/php

Project homepage:
http://wso2.org/projects/wsf/php

Danushka MenikkumburaGermany; the winners this time?

I got an interesting mail from a friend of mine today. According to this mail, there is a pattern in how different countries have won the FIFA World Cup so far. When that pattern is matched with the years it defines a phenomenon. The source of this mail is unknown. Interestingly, according to this phenomenon, Germany should win the World Cup this time. Lets keep our fingers crossed!.


  1. Brazil won the World Cup in 1994;   before that they also won in 1970. Adding 1970 + 1994= 3964                                                  
  2. Argentina won its last World Cup in 1986; before that they also won in 1978. Adding 1978 + 1986= 3964                                            
  3. Germany won its last World Cup in 1990; before that they also won in 1974. Adding 1974 + 1990= 3964                                            
  4. Brazil also won the World Cup in 2002; before that they also won in 1962. Adding 1962+ 2002= 3964                                            
  5. Therefore if you want to know what nation is going to win the  
  World Cup in 2010, you only have to subtract 2010 from the magic number 3964. The result is 1954. In 1954 the World Cup was won by Germany !!!

Samisa Abeysinghe666

VI is 6 in Roman numerals.
S is 6 in Greek
A is 6 in Babylonian.

666.

Yes, Visa is the card of the devil.


Samisa AbeysingheWSO2 Web Services Framework for PHP v2.1.0 Released

It has been a while since we released WSF/PHP the most complete Web Services framework out there.

This release comes just at the right time, to keep the world in formed that the project is alive and also let the communities out there know that WSO2 continues to contribute to open source.

In terms of business, there are much more lucrative projects that we have in WSO2, yet, we do want to continue to keep releasing and improving the WSF/PHP project, keeping to our open source norms. This project has loads of users proven by the download numbers.

Also, we keep on hearing from the users that the support they get from the open forum is so good, that they hardly need to buy support. Bad for business, but good for open source :)

You can download the release from:

The release fixes multiples of bugs and also adds some improvements. You can visit the project home and project documentation for more information.

Tyrell PereraHBR :: China's Exchange Rate Policy: What's Really Going On



China's Exchange Rate Policy: What's Really Going On - The Conversation - Harvard Business Review
"You don't need complex models to predict that the renminbi will remain undervalued for a long time. Whereas an equilibrium exchange rate must eventually lead to a balance in international payments, the data show that between 2000 and 2007, China's share of global manufacturing output soared from 5.7% to 11.4%, and it accumulated foreign exchange reserve of nearly 2.4 trillion dollars. Those are the world's largest reserves in absolute terms; in relative terms, they're astonishing. They account for 50% of China's GDP, 12% of US GDP, and 30% of the world's reserves today. China knows it must do something radical to rectify the imbalance and a tightly managed float against a basket of foreign currencies isn't the solution."


Nandika JayawardanaWSO2 Web Services Framework for PHP 2.1.0 Released

I am pleased to announce the release of v2.1.0 of  wso2 wsf/php. This release comes after quite some time since the 2.0.0 release was back in late 2008. Since then a lot of changes have token place in the underlying code base of WSF/PHP. The WS-Security handling has been improved and updated and that functionality is now available with this release of WSF/PHP. In addition to that, this release is built and tested for PHP 5.3. Many users have been querying about a PHP 5.3 compatible release for a while and with this release, all the issues users had with installing and running on php 5.3 will be solved. Libxml2 dependency has been removed from the default build and it uses build-in Guththila xml parser for xml handling which should also improve the performance.

You can download the release from http://wso2.org/downloads/wsf/php.

You can find the complete release note here.

https://svn.wso2.org/repos/wso2/branches/wsf/php/2.1.0/NEWS

Enjoy WSO2 WSF/PHP 2.1.0.

Chintana WilamunaWhat is AGPL?

Recently bumped into a license called AGPL. If you don’t know what it is, just by looking at the name you can guess that it’s one from FSF. AGPL is designed to close the “ASP loophole”. What does that mean? If you’re using GPL licensed software, you MUST release the source code if you’re redistributing [...]

Hiranya JayathilakaFIX Your SOA with WSO2 ESB

I believe WSO2 ESB is the ONLY complete enterprise service bus which supports the FIX (Financial Information eXchange) protocol. The FIX transport of WSO2 ESB enables the service bus to communicate with FIX acceptors and initiators. FIX messages received by the service bus can be routed, filtered or transformed using the existing set of mediators. If needed, FIX messages can be transformed and sent to external systems over different protocols such as HTTP and JMS.
I published an article titled "FIX Your SOA with WSO2 ESB" which explains how to setup the FIX transport in WSO2 ESB 3.0 and how to use it to implement a variety of integration scenarios. It gives a good overview on how to develop high performance finance data routing systems using WSO2 ESB. Hope you'll like it!

Ruwan LintonFirst time experience of an Earthquake

So, I came into Mexico, to be specific to Mexico City, the Sheraton Maria Isabella Hotel and Towers for a customer engagement on behalf of my Office, WSO2 Inc. I had another friend of mine (Amila) with me.

Because of the customer work we are more or less alive on the whole night, to get the required scenarios working. My friend went into sleep on this specific day, which is 30th of June 2010 at around mid night, but I was still working. My laptop was on my bed and suddenly I felt my laptop going away from me and coming back to me :-) With that I also felt like some God is shivering the multi story building, on which we were on the 6th floor.

I stood up and still the building was like a pendulum. I realized this is a Earthquake apparently it is of 6.2 magnitude. :-( After about 5 minutes the building settled, and later I found that, that building is designed to move like that in an earthquake.

Hiranya JayathilakaAxis2 TCP Transport Revamped

I recently did some major improvements to the Axis2 TCP transport. The TCP transport enables Axis2 services and clients to send/receive SOAP messages over TCP, using Java TCP sockets. The old TCP transport was very simple and it must be configured globally in the axis2.xml file. Due to this limitation, a service could not open up its own port to listen to incoming TCP messages. All the TCP requests were captured by a single, globally configured port and WS-Addressing headers were used to dispatch the requests to the appropriate services.
The new transport implementation is fairly advanced with a wide range of configuration options. It can be configured globally in the axis2.xml file, or it can be configured at the service level in the corresponding services.xml files. Only the port number was configurable in the previous TCP transport implementation. The new implementation supports all the parameters described below:
  • transport.tcp.port - Port number (mandatory parameter)
  • transport.tcp.hostname - The host name to which the server socket should be bound
  • transport.tcp.backlog - The length of the message back log for the server socket (defaults to 50)
  • transport.tcp.contentType - Content type of requests (defaults to text/xml)
In the new transport, if a request is received by a port configured at the service level, it is pre-dispatched to the corresponding service. If the global port receives a TCP message, WS-Addressing headers will be looked up while dispatching.
These improvements are now available in the Axis2 trunk. So feel free to take it for a ride and give us your feedback. I also have some plans to make some improvements to the Axis2 UDP transport. I intend to add multicast support to the existing UDP transport and with that we will be able to support multicast request – unicast response message exchange pattern in Axis2.

Damitha KumarageA book of five rings

These days I am reading two different translations of the same book “Go Rin No Sho” a book originally written by famous Japanese warrier Miyamoto Mushashi(1584-1646).  Why two translations of the same book and why I read both?. To understand let’s go into some detail. Miyamoto Mushashi lived in a time where Feudal Japan is [...]

Kalani RuwanpathiranaHow to merge multiple images into one image - Java ImageIO

My previous post shows how to split an image into chunks. Now let's see how to merge multiple images into one image. Say we need to concatenate following four image chunks. I got these chunks by splitting the image in the right hand side, using the image splitter.   Following code shows how to concatenate the image chunks above into one image. int rows = 2; //we assume the no.


Tyrell Perera... & Greedy when others are fearful


"Be fearful when others are greedy & Greedy when others are fearful" - Warren Buffet


China Buys Greek When No One Else Will
"With the global economy muddled in a sluggish recovery, few governments have been out to shop and invest. China, however, has gone forward to wine, dine, and conquer market shares that some Western nations deem insignificant or even scoff at -- Greece is just one example.

In the past five years, China has made other market building bargains in otherwise overlooked countries, including Costa Rica, Sudan and Zimbabwe. While the United States is heavily financing the war in Iraq and Afghanistan, China is taking advantage of U.S. security there and negotiating oil field contracts and managing the Anyak copper mine, home to one of the" largest deposits of the metal in the world.


Damitha KumarageConsuming secured WSO2 ESB proxy service from command line

I have a proxy service deployed in my esb server. This service will verify the signature of the incoming messages and decrypt them before sending it to the target service. To deploy that service I followed the following procedure. I first created a simple pass through service using the Add/Proxy Service menu. I gave the [...]

Hiranya JayathilakaWSO2 ESB Mediation Statistics - Let Numbers Do the Talking

WSO2 ESB comes with a mediation statistics component, which allows users to collect and monitor statistics on proxy services, sequences and endpoints. Data gathered by this component can be viewed through the ESB management console or one can even develop some custom code to pump the data into an external monitoring tool.
I just published an article titled "WSO2 ESB Mediation Statistics: What Can Numbers Tell About Your SOA?" which explains the ins and outs of the mediation statistics component along with how to process the collected statistical information by writing custom code. Enjoy!

Samisa Abeysinghe/dev/full

$ ls > /dev/full
ls: write error: No space left on device

Use case: Test your program's behavior when disk is full

Damitha KumarageSamurai Warriors

Samurai warriors are famous for their dedication to the master. They are trained to do or die for the master’s cause. They preferred self sacrificing through the traditional suicide method called ‘Hara Kiri’ rather than betraying his master. There are so many tales of Samurai bravery and honesty. Some say that Japanese army inherited this [...]

Chanaka JayasenaSimple tree control

download

HTML tree controls are often bit complicated than it should be. But the above tree control is very simple. It also has some animated effect. If you have simple tree to display in your user interface this tree will be a good starting point. Basically the tree is a structured list nested in to layers.


<div class="treeControl">
<ul>
<li><a class="nodata" onclick="treeColapse(this)"> </a> <a class="treeNode" onclick="treeColapse(this)">lev1-one</a></li>
<li><a class="minus" onclick="treeColapse(this)"> </a> <a class="treeNode" onclick="treeColapse(this)">lev1-two</a>
<ul>
<li><a class="nodata" onclick="treeColapse(this)"> </a> <a class="treeNode" onclick="treeColapse(this)">lev2-one</a></li>
<li><a class="nodata" onclick="treeColapse(this)"> </a> <a class="treeNode" onclick="treeColapse(this)">lev2-two</a></li>
<li><a class="nodata" onclick="treeColapse(this)"> </a> <a class="treeNode" onclick="treeColapse(this)">lev2-three</a></li>
</ul>
</li>
<li><a class="nodata" onclick="treeColapse(this)"> </a> <a class="treeNode" onclick="treeColapse(this)">level-three</a></li>
</ul>
</div>


The code above will display a tree looks like following.

Danushka MenikkumburaThe History of FIFA World Cup Match Ball

In the early 1920s Adi Dassler was innovating and producing the best football products of his time. Today, the company he founded still is.

Adidas has proudly been introducing football with a new design for each FIFA World Cup since its very first encounter in 1970. This is the history of balls they have come up with so far.

adidas Telstar - 1970 FIFA World Cup Mexico

1970b adidas Telstar and adidas Chile - 1974 FIFA World Cup Germany

1974b adidas Tango - 1978 FIFA World Cup Argentina

1978b adidas Tango España - 1982 FIFA World Cup Spain

1982b adidas Azteca - 1986 FIFA World Cup Mexico

1986badidas Etrusco Unico - 1990 FIFA World Cup Italy

1990b adidas Questra - 1994 FIFA World Cup US

1994badidas Tricolore - 1998 FIFA World Cup France

1998b adidas Fevernova - 2002 FIFA World Cup Korea/Japan

2002b adidas Teamgeist™ - 2006 FIFA World Cup Germany™

2006b

adidas Jabulani – 2010 FIFA World Cup South Africa

fifa-worldcup-2010-ball Read more here.

Yumani RanaweeraWSO2 Stratos, the first 100% open source cloud platform for enterprise applications

“At a time when IT developers can create a new application in one month, taking months to provision and deploy servers and systems no longer makes strategic or economic sense,” said Dr. Sanjiva Weerawarana, WSO2 founder and CEO.

Read on @ http://www.itpro.lk/node/6962

Chintana WilamunaVMware ESXi on Realtek NIC

VMware ESXi 4.0 doesn’t support Realtek RTL8111/8168 network cards by default. When you try to install ESXi on a computer with a Realtek NIC it will say the network card is not supported and will not allow you to proceed with the installation. Luckily you can modify the ESXi ISO to include the Realtek driver [...]

Tyrell PereraBuilding an Enterprise App Store with WSO2 Gadget Server

In my previous post, Portals and Mashups in the Cloud, I described an ecosystem that can be deployed either in your data centre or in the cloud.



An ecosystem such as above will allow enterprises to do two important things;
  1. Expose APIs for third party mashup/gadget developers to utilise in their apps
  2. Maintain a repository where business users can visit, browse and select apps from. These apps run in their personal portal pages.
Within that post lies the fundamentals of an Enterprise App Store. What is an enterprise app store? Well, in the mobile device world of iPhones, Androids and Symbians, we all use an app store at one point or the other. Whether it's iTunes, The Android Market Place or Nokia's OVI Store, we all visit them and they provide one significant benefit in general. We get to personalise our device with the applications we need. We get to build, at a software level, a phone that is optimised for our day-to-day use, without being programmers. We also get to influence the programmers who write these apps, by requesting new features for existing apps or, at times, encouraging them to develop new ones. The role of the device vendor here is to provide the best API possible for the app programmers. The vendor benefits by increased user base and the programmers get intrinsic and more often financial rewards for their creations.

An Enterprise App Store brings this to your organisation's IT department.


"The premise of an app store model for enterprises is simple: By removing the middleman, the famous bottleneck between the business and IT demand can be reduced in many cases. Application backlogs can shrink, consumption of internal and external IT resources will increase, and fierce competition to provide the best solutions to niches can greatly improve overall quality (the long tail of IT argument), all while reducing costs. At least, that’s what is possible if we look at what’s happening to the non-enterprise software market today." - Source, Dion Hinchcliffe.
This is why we had an Enterprise Gadget Repository in the WSO2 Gadget Server from day one. If you already run it within your enterprise (either in your data centre or in the cloud), you already have the infrastructure for an Enterprise App Store.

Adding gadgets to the repository.
An administrator can add gadgets to the repository in a few easy steps (we have documented how).




How users interact with the App Store.
Users sign in to the portal and see a default set of gadgets configured by the administrator. Of course they can change the layout of these gadgets and save their personal preferences for each. They can add new tabs, clone existing tabs to build new tabs.. but I digress. Let's see how they interact with the App Store. When they decide to add gadgets, they are re-directed to the gadget repository.



Apart from browsing the directory and adding gadgets to their portal pages, the users get to rate and comment on them.



This builds a community where users see what others think about the app, feature requests and even bug reports. They also see how many are already running this app.
"That is, the app store supports an ecosystem of developers and creators, but acts as a governance mechanism to make sure the crappy and malicious stuff doesn't degrade and contaminate the ecosystem." - Source, Joe McKendrick.
A nice software delivery mechanism for an SOA isn't it? :)

Additional Resources:




Tyrell PereraPortals and Mashups in the Cloud



A few days ago Azeez, the senior architect behind WSO2 Stratos wrote a detailed post about its deployment architecture. He tells the story of how we migrated our carbon product stack to the cloud-native platform that we named WSO2 Stratos.

So what does the future hold for portal and mashup developers? How will Stratos change our lives?

As you can see the WSO2 Mashup Server and WSO2 Gadget Server are also deployed in Stratos as cloud-native services. This means that organisations will be able to deploy highly scalable, highly available, distributed applications with ease. And they will be far less expensive than today with a granular, pay-as-you-go model.

This is good news for mashup developers because now we can re-use code and services in a massive scale without an exponential increase in infrastructure costs as our mashups become popular. For instance, imagine that you have a mashup and plan to sell it as a service. The old model would demand that you invest heavily on servers and bandwidth, and then worry about scaling once the demand catches up. With Stratos, you can forget about this initial cost and adopt a pay-as-you-go approach. Scaling takes care of itself, leaving you time and money to invest in making your mashup awesome.

The same story applies for portals both at the portal user level and, a much more granular gadget level. Since users would want to use those super-cool gadgets from your portal in their blogs, web pages and various other places, because Stratos takes care of scalability, you will have more time to promote your portal and its gadgets . Your gadgets are using mashups? No problem.

Actually, if you carefully look at the deployment architecture, you can migrate, mashup and gadgetise any service using the set of products available there.



An example deployment of an ecosystem based on WSO2 Gadget and Mashup servers will be similar to that shown below. The portal plays a prominent role helping human users collaborate. But what's noteworthy is the amount of collaboration points for non-human consumers such as third party apps via APIs and Feeds. This type of consumption is usually recursive in nature and the demand is usually unpredictable as your community grows (think Facebook, its users and the amount of Apps).



Soon, with the introduction of WSO2 ESB along with the auto scalability of Stratos, a company would be able to set up an eco-system such as the one above with minimum infrastructure costs.


Hiranya JayathilakaNew Configuration Model of Synapse

If you are trying out a latest Apache Synapse build off the SVN trunk, you will notice that the Synapse configuration model has gone through some significant changes lately. In the past, Synapse was programmed to load the entire mediation configuration (sequences, endpoints, proxy services, tasks etc) from a single XML file, named synapse.xml. Synapse would parse this XML file at startup and construct an object model known as the SynapseConfiguration which contains the definitions of all active mediation components at runtime. While this approach was simple and clean, it had a number of limitations:
  • Configuration management becomes a nightmare as the size of the synapse.xml grows. A typical heavy duty configuration would consist of dozens of proxy services, sequences and endpoints. When all these are packed into a single XML file, it becomes difficult to locate a single configuration item quickly.
  • With all configuration artifacts stored in a single flat file, it is almost impossible to develop satisfactory tooling support for configuration development and maintenance.
  • A team of developers cannot work on configuring a single Synapse instance at the same time.
  • Hot deployment is a feature that Synapse has been lacking for years. Being able to hot deploy a proxy service or a sequence into Synapse without having to restart the service bus is a great convenience at development time. But a configuration model based on a single XML file is not at all capable of handling such requirements.
Considering these drawbacks, I implemented a new configuration model for Synapse, known as the multi XML configuration builder. The new model, which is now the default configuration model in Synapse, loads the configuration from a structured file hierarchy, instead of loading the mediation configuration from a single XML file. With this model in place, each endpoint, sequence and proxy service has to be defined in separate XML files. The directory structure for storing these individual configuration files is as follows:
synapse-config
|
+-- registry.xml
+-- endpoints
+-- event-sources
+-- local-entries
+-- proxy-services
+-- sequences
`-- tasks
As you can see there are separate dedicated directories for each type of artifacts. Each of these directories can house zero or more XML configuration files. Each file must have the .xml extension to be recognized by the Synapse configuration builder. If you take a look at the source code you will notice that I have enforced this restriction using a Java FileFilter:
    private static FileFilter filter = new FileFilter() {
public boolean accept(File pathname) {
return (pathname.isFile() && pathname.getName().endsWith(".xml"));
}
};

private static void createProxyServices(SynapseConfiguration synapseConfig, String rootDirPath)
throws XMLStreamException {

File proxyServicesDir = new File(rootDirPath, PROXY_SERVICES_DIR);
if (proxyServicesDir.exists()) {
if (log.isDebugEnabled()) {
log.debug("Loading proxy services from : " + proxyServicesDir.getPath());
}
File[] proxyDefinitions = proxyServicesDir.listFiles(filter);
for (File file : proxyDefinitions) {
try {
OMElement document = parseFile(file);
ProxyService proxy = SynapseXMLConfigurationFactory.defineProxy(
synapseConfig, document);
proxy.setFileName(file.getName());
SynapseArtifactDeploymentStore.getInstance().addArtifact(
file.getAbsolutePath(), proxy.getName());
} catch (FileNotFoundException ignored) {}
}
}
}
The mediation registry is defined in the registry.xml file which should be placed at the top level of the file hierarchy.
So does the multi XML configuration builder solve the problems in the old configuration model? Let’s consider the facts:
  • With Synapse configuration broken down into smaller, manageable pieces the whole configuration becomes easier to manage and keep track of. As long as the XML files are named appropriately, it is extremely easy to quickly locate a particular configuration item. We recommend using the artifact names to name the corresponding XML files. For an example the file containing the definition of the FooProxy can be named FooProxy.xml.
  • With the multi XML configuration builder, developing powerful and elegant tools for creating pieces of the service bus configuration becomes a trivial task. Also one can use conventional configuration management tools and version controlling systems such as Subversion to store and manage the configuration artifacts.
  • A team of developers can now work on configuring Synapse. Each developer in the team can work on his own configuration file or set of files.
  • Supporting hot deployment is now feasible. As a matter of fact, Ruwan implemented hot deployment and hot update support for Synapse based on the multi XML configuration builder a few weeks back. This feature is now available in the Synapse trunk and will be available for the next Synapse release.
So there you go. Target achieved. There is one little glitch in this approach though. That is how do we handle backward compatibility with older Synapse versions? For instance how can a Synapse 1.2 user, who has a single synapse.xml file, migrate to a new Synapse version? We have provided a solution for that as well. In the new Synapse configuration file hierarchy you can place a synapse.xml file at the top level (alongside with registry.xml). All the mediation components defined in this synapse.xml will be loaded to the service bus at startup along with any other components defined inside the individual directories. So a Synapse 1.2 user can simply copy the existing synapse.xml file to the synapse-config directory in a new Synapse distribution, and it will be picked up by the service bus. In addition to this convenience feature, we are planning on developing some migration tools that can help users to easily migrate an old Synapse configuration file onto a newer version of Synapse.
As far as Synapse is concerned each configuration builder should be associated with a corresponding configuration serializer implementation. Serializers are used to convert the SynapseConfiguration object model back to the textual/XML form. So for the multi XML configuration builder I developed a matching multi XML configuration serializer which can save a SynapseConfiguration object model to a file hierarchy. Similar to the configuration builder this implementation was also heavily dependent on Java file IO APIs. However, after a while we realized that the serializer is not working as expected on certain platforms; most notably on Windows. After running some debug sessions and doing some on-line reading I realized that the Java file IO operations are not consistent on every platform. As a result sometimes the serializer would encounter trouble creating a new file or moving an existing file on Windows.
At this point, my colleague, Rajika suggested using Apache Commons IO API for file manipulation. Commons IO API provides a nice layer of abstraction on top of the standard Java IO APIs. It handles all file IO operations in a consistent and platform independent manner. So I got rid of almost all the Java file IO code in the multi XML configuration serializer and replaced them with corresponding calls to the Commons IO API. Some sample code fragments are shown below:
    private void cleanUpDirectory()  throws Exception {
// If the target directory already exists and contains any files simply rename it to
// create a backup - This method does not delete the target directory
if (rootDirectory.exists() && rootDirectory.isDirectory() &&
rootDirectory.listFiles().length > 0) {

if (log.isDebugEnabled()) {
log.debug("The directory :" + rootDirectory.getPath() + " already exists. " +
"Creating a backup.");
}

backupDirectory = new File(rootDirectory.getParentFile(), "__tmp" +
new GregorianCalendar().getTimeInMillis());
FileUtils.moveDirectory(rootDirectory, backupDirectory);
}

// Create a new target directory
FileUtils.forceMkdir(rootDirectory);
}

private void writeToFile(OMElement content, File file) throws Exception {
File tempFile = File.createTempFile("syn_mx_", ".xml");
OutputStream out = new FileOutputStream(tempFile);
XMLPrettyPrinter.prettify(content, out);
out.flush();
out.close();

FileUtils.copyFile(tempFile, file);
FileUtils.deleteQuietly(tempFile);
}
FileUtils is the entry point for file IO operations in the Commons IO API. It provides you with a range of useful methods for managing and manipulating files.
Note that when writing to a file we first write the whole thing to a temporary file and once completed we copy the temp file to the final location. This was required to handle certain edge cases in the hot update implementation. Without that the hot updater will attempt to pickup and process half baked files (Again mostly on Windows – It seems Windows writes to files in chunks).
All in all, Apache Synapse is now equipped with a powerful new configuration model, a matching configuration serializer and hot deployment capabilities that leverage the new configuration model. Speaking of hot deployment, it is also based on the Axis2 hot deployment framework. Therefore it is configured in the axis2.xml file. We are yet to do a Synapse release with all these new exciting features but if you are itching to try them out feel free to grab a nightly build. Also be aware that WSO2 ESB 3.0, which is based on Synapse, has been released and that release contains all these new improvements.

Danushka MenikkumburaSelling free software is hard?

I happened to read an interesting article based on an interview with Jim Whitehurst, RetHat’s CEO, on ComputerWorld. It basically discusses why RetHat is still a $750 million company, it should have been a $5 billion company by now according to their projections, though.

At one points he states, ““selling free software is hard”. A knock-on consequence is that it harder – roughly *ten* times harder - for an open source company to grow to a given revenue level than it is for the corresponding proprietary company.”

More importantly he also states that, “the job is harder not because they are incompetent, or because open source will “fail” in any sense. But because the economics of open source software – and therefore the business dynamics – are so different from those of traditional software that it simply won't be possible in most markets.”

Read that full article here.

Srinath PereraAmazon and 11 nines

Amazon has claimed 11 nines on Availability . It is very very hard feast to accomplish, and if they have done it (I would love to know how they decided on that number), that is a ground breaking achievement.

To see why, lets see what it means. Availability is measured as MTTR (Mean time to Recovery)/ MTTF (Mean time to Failure) as a percentage. In other words, it is time to recover after a failure, divided by mean time for such a failure happen. Reliability is measured in terms of number of nines in availability. So Amazon S3 will be fail for a second only for every 10^9 seconds, or 10^9/(360*24*60*60) = 32 years!!

On their seminal paper "High Availability Computer Systems", Jim Gary and Daniel Siewiorek defined availability classes, as follows

unmanaged 90.% - 50,000 mins/year downtime
managed 99.% - 5,000 mins/year downtime
well-managed 99.9% - 500 mins/year downtime
fault-tolerant 99.99% - 50 mins/year downtime
high-availability 99.999% - 5 mins/year downtime
very-high-availability 99.9999% - .5 mins/year downtime
ultra-availability 99.99999% - .05 mins/year downtime

As you will notice even they defined only 7 nines. So we do not have a name to call what Amazon has claimed.


Danushka MenikkumburaGet the Best of Both Worlds with WSO2 Stratos!

stratos

This diagram resembles a typical multiple inheritance scenario in C++ programming language. In a nutshell this conveys the message that WSO2 Stratos inherits from both Cloud Computing and WSO2 Carbon, the popular middleware platform. In other words, WSO2 Stratos is cloud middleware.

Being an offspring of cloud computing WSO2 Stratos possesses the following attributes.

1. Elasticity: Stratos manages your underlying cloud infrastructure to seamlessly handle the scalability demands of your application.

2. Multi-tenancy: Departments, developer groups, or projects run fully independently, but share the same middleware platform for maximum resource utilization.

3. Billing and Metering: Each tenant can meter their actual resource use for internal billing purposes.

4. Self Provisioning: Authorized users can provision new tenants from a web portal in moments.

5. Dynamic Discovery: Linking up services that reside in a dynamic and elastic environment can be tricky – but Stratos simplifies and automates this process with standards-based service discovery and automatic configuration capabilities.

6. Incremental Testing: Cloud fundamentally changes the way you test and deploy applications, but doesn’t reduce your quality requirements! Stratos allows you to deploy service versions side by side and carefully dial up the traffic sent to each version.

WSO2 Carbon is the OSGi-based core platform for WSO2’s enterprise-grade middleware stack. This base platform hosts a set of key middleware components that are essential for a enterprise-grade middleware framework.

stratos-services Basically you have the luxury of using the Carbon-based middleware components over Stratos services. The initial list includes,

WSO2 Stratos Governance powered by WSO2 Governance Registry for design-time and runtime governance of your SOA framework.

WSO2 Stratos Identity powered by WSO2 Identity Server for identity and entitlement management.

WSO2 Stratos Application Server powered by WSO2 Web Services Application Server for service hosting and management.

WSO2 Stratos Gedgets powered by WSO2 Gadget Server for writing and managing portlets.

WSO2 Stratos Mashup Server powered by WSO2 Mashup Server for deploying Web service Mashups.

WSO2 Stratos Business Activity Monitor powered by WSO2 Business Activity Monitor for monitoring business activities within your SOA deployment.

You can expect many more useful Stratos services in the future.

Therefore I would say WSO2 Stratos is a one-stop-shop for a complete SOA middleware framework in the cloud.

Supun KamburugamuvaDifference between service chaining and callouts in WSO2 ESB

In a typical integration there can be a single service exposed supported by two implementation services. 

Client ---------> ESB ------> Service 1
                                ------> Service 2
Scenario 1:
When the request comes to the ESB it should be validated by sending to the Service 1. If the request is valid it should be sent to service 2

Scenario 2:
Request only has few information. In order to access the service 2,  there is some information that need to be retrieved from service 1. After retrieving this information request must be transformed. In this case before sending the request to service 2, request must be enhanced with information from service 1.

Obviously Scenario 1 fits Service chaining because it is chained invocation. You invoke service 1 then invoke service 2. This kind of invocation should be done using the send mediator instead of callout mediator of WSO2 ESB.

Scenario 2 is bit different. Before proceeding with the request message we need to enhance it with information from service 1. So by looking at the problem we can see it requires a blocking call to the service 1 to get some information. This kind of invocation can be done using the send mediator. But my belief is it fits more with the callout mediator which does blocking calls.

For more info please refer the configuration langauge guide of WSO2 ESB.



Damitha KumarageGenerating, Implementing, Building and Deploying my WSO2 WSAS service

There are many ways you can write a web service and deploy it in WSO2 WSAS application server environment. I already to explained how to deploy your POJO service in Eclipse platform. Here I’ll explain in detail the top down approach(Contract first) using WSAS admin console. I don’t use Eclipse platform here. An WSO2 Oxygentank [...]

Nuwan BandaraThe World Of Programming

The Smashing Magazine posted a nice article on infographics, and their example was “The World of Programming”, that’s a job well done :)

Sameera JayasomaWebinar: Tired of Configuring? Say Hello to Point-and-Click Customizing!

The latest release of WSO2 Carbon, 3.0.0, comes with a new feature called "Feature Manager" which allows you to customize WSO2 Carbon based products by installing/uninstalling features. This feature becomes handy for people who are looking for a simple point-and-click provisioning of software products.

During this webinar, I will give you a complete understanding of the "Feature Manager" with comprehensive demonstrations.

TUESDAY, JUNE 8TH, 2010
North American Audiences
10:00 AM PDT

WEDNESDAY, JUNE 9TH, 2010
EU Audiences
9:00 AM GMT

If you are interested, please visit here to register.

Thilina BuddhikaA Guide on Setting up and Configuring a Domain in WSO2 Stratos..

In this screen-cast, Shankar walks you through the steps required to setting up a domain in WSO2 Stratos, configuring  and customizing it according to your requirement.

Shankar is a Senior Architect at WSO2, and also a key member in WSO2 Stratos team.

Paul FremantleWSO2 Stratos - Platform-as-a-Service for private and public cloud

Yesterday we announced something I believe is a game-changer: WSO2 Stratos. What is Stratos?
WSO2 Stratos is a complete SOA and developer platform offered as a self-service, multi-tenant, elastic runtime for private and public cloud infrastructures.
What that means is that our complete SOA platform - now enhanced with Tomcat and Webapp support - is available as a  "cloud native" runtime that you can either use on the Web (yes - you can try it out right now), on Amazon VPC, or on your own internal private cloud based on Ubuntu Enterprise Cloud, Eucalyptus and (coming soon) vmWare vSphere. It is a complete Platform-as-a-Service for private and public clouds.

I'll be writing more about Stratos over the coming weeks and months, and I'll also provide links and tweets to other Stratos blogs, but in this blog I want to simply answer three questions:

  1. I'm already talking to {vmWare, Eucalyptus, Ubuntu, Savvis, Joyent} about private cloud - what does WSO2 add that they don't have?
  2. What is the difference between Stratos and the Cloud Images that WSO2 already ships?
  3. Why would I choose WSO2 over the other vendors offering Platform-as-a-Service?
In order to answer the first question, lets look at the cloud computing space, which is most easily divided up into:
  • Infrastructure-as-a-Service (IaaS): this is where Amazon, Eucalyptus, vmWare, Saavis and Joyent play
  • Platform-as-a-Service (PaaS): Google App Engine, vmForce, Tibco Silver and now WSO2 Stratos play in this space.
  • Software-as-a-Service (SaaS): Google Apps, Google Mail, Microsoft Office Live, Salesforce, SugarOnDemand - these and many more make up the SaaS category.
To generalize wildly, most people talking about public cloud today are talking about SaaS. And most people talking about private cloud today are talking about IaaS.

SaaS is fantastic for quick productivity and low cost. WSO2 uses Google Apps, Sugar on Demand and several other SaaS apps. But SaaS doesn't create competitive advantage. Mule also uses Google Apps. They may well use Salesforce. SaaS cannot produce competitive advantage because your competitors get access to exactly the same low-cost services you do. In order to create competitive advantage you need to build as well as buy. For example, we use our Mashup Server together with our Sugar Business Messaging Adapter to provide insight and management of our pipeline that goes beyond what Sugar offers.

IaaS is of course a great basis to build apps. But it's just infrastructure. Yes - you get your VM hosted quicker. But someone has to create a useful VM. And that is where PaaS comes in. PaaS is how to speed up cloud development.

What does Stratos give you on top of an IaaS? It gives you an Application Server, Registry, Identity Server, Portal, ESB, Business Activity Monitor and Mashup Server. And it gives you these as-a-Service: completely self-service, elasticly scalable, and granularly metered and monitored. Someone in your team needs an ESB - they can provision one for themselves instantly. And because it's multi-tenant, it costs nothing to run until it gets used. How do you know how it's used? The metering and monitoring tells you exactly how much each tenant uses.

2. What is the difference between Stratos and the existing WSO2 Cloud Images?

The cloud images we started shipping in December are not Cloud Native. Stratos is Cloud Native. In practice, this means that when you log into Stratos (go on try it now) you can instantly provision your own domain, together with a set of Stratos services. This saves memory - instead of allocating a new VM and minimum half a gigabyte of memory to each new server you get a new ESB with zero extra memory cost. And it's much easier. The new ESB will automatically be governed and monitored. It's automatically elastically clustered.

3. Why would I choose WSO2 over other PaaS vendors?

Firstly, if you look at PaaS as a whole there is a huge divide between Public PaaS and Private PaaS. The public PaaS vendors simply don't offer private options. You can't run force.com or Google App Engine applications internally, even if you want to. WSO2 bridges that gap with a PaaS you can use in the public Web, on a virtual private cloud, or on premises.

The second big differentiator between WSO2 and the existing PaaS offerings is the architecture. Mostly PaaS is a way of building webapps. WSO2 offers a complete enterprise architecture - governance, business process, integration, portal, identity and mashups. And we support the common Enterprise Programming Model (not just Java, WebApp, JAX-WS, but also BPEL, XSLT, XPath, Google Gadgets, WSDL, etc). The only other PaaS that I know of that offers a full Enterprise architecture is Tibco Silver.

The third and most important differentiator is about lock-in. Software vendors love lock-in - and Cloud vendors love it even more. So if you code to Google App Engine, you are tied into Google's identity model, Google's Bigtable, etc. If you code to force.com or vmForce - you are tied to force's infrastructure services. If you code to Tibco Silver, you are tied to Tibco. WSO2 fights this in three ways:
  • No code lock-in: we use standards-based coding (WAR, JAX-WS, POJO) and Stratos is 100% Apache License Open Source.
  • No model lock-in: we use standards-based services: 
    • Identity is based on OpenID, OAuth, XACML, WS-Trust
    • Registry is based on AtomPub and REST
    • Business Process is based on BPEL, etc
  • No hosting lock-in: you can take you apps and data from our public PaaS and re-deploy internally or on your own virtual private cloud anytime you like.
I hope you found this a useful introduction to Stratos. If you want more information, contact me paul@wso2.com, or check out the Stratos website or code.

Thilina BuddhikaWSO2 Stratos - WSO2 Carbon middleware platform as a service

WSO2 recently announced the public availability of Stratos, the complete Carbon platform as a service(PaaS).



Before announcing Stratos, WSO2 started offering two cloud services, 'Governance as a Service' and 'Cloud Identity'. With Stratos, it has kept a big step ahead by adding more cloud services to the list along with a centralized management capability.

Registering a domain at https://cloud.wso2.com will allow users to seamlessly experience the WSO2's entire middleware platform as a service. With its Alpha 1 release, following services are offered in Stratos.


Cloud Enterprise Service Bus will be added to the Stratos soon.

As mentioned earlier, all the management activities of a domain is centralized into a single place. Administrators of a particular domain can use this management console to manage Cloud services by activating and deactivating services as per their requirement. And all the user management, account management and key management activities are facilitated through this. In addition to that, they can access their usage details and billing status from here.

 
This blog by Charitha, is a step by step guide on how to start using WSO2 Stratos.

Keeping its openness further, WSO2 made available the Stratos source code to the public. Anyone can build Stratos from this source and deploy it in one of the several infrastructure platforms Stratos supports, like UEC, Amazon EC2, Eucalyptus, etc.

Stratos is it still in Alpha 1 stage, while giving a lot more than expected from an Alpha 1 release.
Keep your fingers crossed for revolutionary feature additions and  improvements in future..

Dimuthu GamageWSO2 Stratos: WSO2 Brings The Whole SOA Stack to The Cloud

WSO2 announced that the SOA stack that they provided as downloadable packages are now available in the cloud as hosted instances with the code name WSO2 Stratos. You can try them out for free from https://cloud.wso2.com. You can register your organization for an account in the WSO2 Stratos by clicking the ‘Register’ button in the home page. You can find a detail guide on ‘How to register for WSO2 Stratos’ from Charitha’s blog, http://charithaka.blogspot.com/2010/06/wso2-stratos-introducing-wso2.html.

At the registration, you will be asked to provide a username and password for the admin account. Use this credential to login as admin for the Stratos services and surf through the products. Here is a brief introduction on all the products currently available.

  • Stratos Governance: Store and govern your services, wsdls, schemas, policies and other SOA artifacts
  • Stratos Identity: Manage user bases, authentication mechanisms, permissions and all the identity aspects of your enterprise.
  • Stratos Application Server: Host your web apps, web services and manage their QoS aspects like security, reliability.
  • Stratos Gadgets Server: Write and host gadgets complaint with Google gadget standards.
  • Stratos Mashup Server: Write mashup using scripting languages like javascript.
  • Stratos Business Activity Monitor: Monitor activities of your services.
  • Stratos Enterprise Service Bus: Coming soon with message routing, intermediate message transformations, task scheduling and many more features.

With this release WSO2 bring complete SOA stack to the cloud, Now your enterprise can enjoy the power of SOA without the hassle of maintaining your own SOA infrastructure.

Nuwan BandaraGadgets On the Cloud

There is no doubt that JavaScript/XML gadgets make a great presentation layer over the web with increasing amount of data floating around. The ability of which these gadgets can be embedded in any place over the web, provides a great flexibility, and a wider reach. Google does this quite nicely with their iGoogle gadgets, enabling the gadgets to be embedded in almost any web page. The success of this great idea, would be only logical if all the data, services and mashups are also available over the web with open access or maybe authenticated access. This is where a cloud story fits-in, and this the very reason why Google can do it quite easily.

However, what if you want to do everything from the scratch and also provide a great presentation layer for the users. For an instance, lets say you have a lot of financial data within your enterprise, and you need to provide some of these to your customers, to general public and some for your employees. To do this, you will have to create appropriate data services, maybe mediate or transform some data, integrate with some legacy data sources, create some business work flows, mashup them with some 3rd party services like Google finance or charts and finally expose the end results to the targeted user group. This is where WSO2 Stratos PaaS comes for your rescue :)

If your requirements are such, you will need a strong middle-ware platform to full fill all the above tasks, and if its all on the cloud, you will not have to worry about anything other than writing your business logic. Once the business logic is correctly compiled, you can Mashup some of your data with external service APIs, and then write the presentation logic purely on javascript and xml as XML Gadgets and expose them to the users you need. Once the gadgets are published on WSO2 Cloud Gadget Server its just a matter of linking them up in any web page you want over the web.


Your browser does not support iframes.

Your browser does not support iframes.



The above two gadgets are taken from WSO2 Cloud Gadget Server and have linked in to this blog, to convince about the great flexibility and reach it can add-up. You do not need to use the Cloud Gadget Portal as the only place for your data to be presented (Of cause if you are not using other gadget server specific privileges such as inter-gadget communication etc). You can simply use the Gadget Server as your own gadget repository, and encourage users to discover the gadgets and embed them into their own web pages over the web.

To sum up the story I would say, try-out Stratos, try out the available services and you will definitely find out more use cases, and creative ways to use the platform and leverage the advantages of the cloud

Chintana WilamunaHowto install WSO2 Stratos?

If you tried the hosted version of WSO2 Stratos at cloud.wso2.com and wants to get down to install it in your virtualized environment, this will help you to build it from the source code. Before you build WSO2 Stratos you have to build WSO2 Carbon. This guide only assumes that you’ve installed Sun JDK and [...]

Chintana WilamunaPrivate cloud endeth?!

I agree with what Werner said about the private cloud. From Amazon’s point of view, it make sense to “kill it” since they’re not going to make money when someone is having a private cloud. So it’s logical to sell their VPC offering as a replacement to a private cloud. If you take a step [...]

Samisa AbeysingheOxygenTank now clustered with nginx

I blogged in May that we used pound to cluster OxygenTank.

But, even before two weeks had elapsed, we had to move to nginx

Pound could not handle the load, and caused many timeouts. It was surprising that moving to nginx, completely eliminated the timeouts.

pound sucks :(

nginx rocks!!! :)

Nuwan BandaraWSO2 Stratos – A true cloud story

Stratos Services

Yesterday (1st of June), A little over a 12 developer team at WSO2, took a great middle-ware platform in to the cloud. It’s not just putting all our server products on an EC2 instance, but embedding all cloud-native features into them. The PaaS (Platform as a Service) is named as WSO2 Stratos, which is based on award winning WSO2 Carbon middle-ware platform. As the Alpha-1 release, Stratos offers number of WSO2 products integrated, namely Governance Registry (GREG), Identity Server (IS), Business Activity Monitor (BAM), Mashup Server (MS) and WSO2 Gadget Server (GS).

Stratos is also offered as a downloadable version for the private cloud within your enterprise. If you are quite serious about using SOA for your enterprise and do not need to worry about deployment, scalability and server maintenance, Stratos would be the ideal solution for you.

Danushka MenikkumburaWSO2 Debuts Cloud Platform for Apps

WSO2 debuts an enterprise open source cloud platform, WSO2 Stratos, for application deployments.

Billed as a hosted platform-as-a-service offering, Stratos enables IT professionals to deploy applications and services on private or public clouds. Capabilities are featured for portal, enterprise service bus, and application server capabilities, WSO2 says. Identity management and governance are provided also. Read more on the networkworld.

Danushka MenikkumburaComputing as a Commodity

In good old days companies used to have their own steam engines and dynamos for power generation. Some who could afford to also had their own private power plants. It is needless to say that they had to bear the initial investments and also maintenance thereafter. When the electric grid was established people stopped generating their own power and plugged into the electric grid.

Similarly cloud computing has gradually been taking over from private servers, racks and datacenters. People have been fighting over electric grid - cloud computing analogy. It may not make sense to put data and electricity in the same bucket but if you look at a higher level, I believe it is a perfect analogy. Once you are provisioned, your computing usage will be monitored and billed similar to the case when you are plugged into the national electric grid and start consuming electricity your usage is metered and billed. Its again a reasonable analogy from an infrastructure perspective too.

In 1961, the distinguished computer scientist, the father of the LISP programming language, John McCarthy was the first to suggest publicly – in a speech given to celebrate MIT’s centennial - that computing power (IaaS) and even specific applications (SaaS) could be sold through the “utility” business model in the future. This idea was embraced by computer enthusiasts at that time but did not continue to grab due attention simply because the technology was not ready. But now we can see his idea coming up in the form of cloud computing.

The principle of cloud computing is trivial. Its just a paid service for computing. The service may include, hardware rental – in the case of public cloud –, use of specific computer applications (SaaS) and license charges or just access to computer processing power (IaaS). The shape of the deal solely depends on what the client wants and what the utility computing company can offer.

The key benefit from a customers’ perspective is that they can just get going without worrying about all the hardware, software, licenses and above all the maintenance headaches. Probably the customer can switch to a smaller IT department if not shut it down completely, provided that the utility computing service provider is highly dependable ;-).

Utility computing comes in handy when it comes to compatibility too. You have the convenience of subscribing to a single software suite and use it throughout your organization without getting each department in your large organization to use its own software suite making interoperability a nightmare.

The main risk in utility computing is reliability. You need to make sure you can have a long-term partnership with your service provider. If the service provider goes out of business for some reason or you find the software they offer is buggy and broken most of the times, then you are going to pay the price at the end of the day. But if your service provider is a market leader like WSO2, then it is guaranteed that you get an uninterrupted service all the time. Specially when it comes to middleware, something like WSO2 Stratos, the cloud version of award winning WSO2 Carbon platform, will make sure you will get reliable, rubout and uninterrupted service. You get everything you need to build an enterprise-grade middleware framework on the cloud including Cloud Application Server, Cloud Governance Registry, Cloud Gedget Server, Cloud Mashup Server, Cloud Business Activity Monitor and not forgetting Cloud Identity Server that are powered by WSO2 Carbon. WSO2 Stratos is still in its early days but worth giving a try!.

Charitha KankanamgeWSO2 Stratos - Introducing WSO2 middleware Platform as a Service (PaaS)

Yesterday we released our newest integrated cloud middleware platform, WSO2 Stratos. It is now online and ready for use!

For the past few years, WSO2 has been doing many releases based on revolutionary Carbon platform, which helped to consistently improve the platform with introducing latest state-of-art technologies. The initial releases of Carbon product platform intended to improve the features of the individual products. For example, a lot of core features were introduced to WSO2 ESB, WSAS, Governance Registry etc.. Then we focused on ease of integration and more component based model. We introduced Equinox based provisioning model to build your SOA platform by picking and choosing the components as and when you need.
Then, the core product platform has been enhanced to support multi-tenancy. With the multi-tenant supported architecture at hand, our brilliant development team was able to introduce the first ever comprehensive middleware PaaS. Why is this so important?
Now, WSO2 Carbon middleware platform is available on Cloud. Anybody can try out it online by accessing http://cloud.wso2.com
Not only that, the code is 100% opensource! As far as I know, this is the first ever opensource cloud PaaS offering.

Without digging in to more details, lets try WSO2 Stratos out.

Step 1

As most of you are familiar with Google Apps, without any guidance you will be able to start using WSO2 Stratos. However, I will start from the scratch. Access http://cloud.wso2.com. This will bring up WSO2 Stratos Manager, which is the is the point of entry for all WSO2 Cloud Services such as Application Server, Business Activity Monitor, Gadget Server, Governance, Identity and Mashup Server. Click on "Register" in order to create an account for you (your organization).



This will direct you to "Select a domain for your organization" page. Specify the domain for your organization and check its availability by clicking on "Check Availability". Select "Next" to sign up your organization.



Enter the required information in "sign up your organization" page. If your registration is successful, you will see a confirmation message. With this, you just created the administration account for your organization. You will receive an email to validate Email instructions specified by you. Click on the link given in the email to access the Stratos Manager login page.
Now, you can log in to the Stratos Manager, by giving the admin credentials you have just specified during the registration process.

Step 2

After log in to Stratos Manager, you will see the cloud services list offered by WSO2 Cloud service platform.



In addition to the cloud services, you can configure a new theme for your account or you can manage new user accounts (add new users, grant necessary permissions to them etc..) through the Stratos Manager.

Suppose, you need to use cloud application server out of the seven cloud services enabled by default. Click on "Cloud Application Server" link. This will bring up "WSO2 Stratos Application Server" login page as follows.



Log in to app server by providing the same admin credentials given above. (You may question why a separate login is required. We have not provided Single Sign On support between Stratos Manager and Cloud services in the alpha1 version. This will be available soon)
The Cloud application server Home page will be shown as follows after you log in to the application server.



If you are already familiar with WSO2 WSAS, this will not make you feel strange. You could either deploy services, secure them, monitor and do a lot of tasks. In addition to that, WSO2 Cloud Application Server, is now provides with web application deployment support. You could use this as your servlet container!

Similarly, you can try out the rest of the cloud services.

Chintana WilamunaCloud native middleware

Also known as WSO2 Stratos and it’s all open source. It comes in two forms. You can either set it up on top of a private cloud used in an enterprise or you could try out the hosted service at cloud.wso2.com. Samisa has written a post giving some background about how Stratos came to life. [...]

Srinath PereraWSO2 Stratos Services Released

WSO2 Stratos, which offers WSO2 SOA platform as a service, is now live, up and running. Stratos opens up a new deployment choice for our servers, by enabling them have their servers as a Service. For example, if a user need a Governance Registry, he had to either run it real hardware, run it through a Virtual Machine, or run it through Cloud. Now, there is a forth option: that is get it as a service through WSO2 Stratos. Of course there is much more to Stratos, see http://wso2.com/cloud/stratos/ and The Six Weeks and 12 People Magic for some more details.

You can find it from https://cloud.wso2.com/., and you can try it for free.



Samisa AbeysingheThe Six Weeks and 12 People Magic

WSO2 Stratos Services are live, up and running.

This is the latest technology miracle from WSO2. A complete Cloud platform was built from ground up within just six weeks.

Yes we had experience with Cloud deployments thanks to governance as a service and cloud identity deployments that we did last year. But this was a novel design with an integrated view of services, with a single cloud manager and also bunch of new features.

The technology involved is bleeding edge and state of the art, with true multi-tenancy, complex tenant-aware security, billing, metering, monitoring and with six unique and comprehensive services. Simply we have built the best you can get with respect to SOA on the cloud today.

The success can be attributed to many aspects. But the paramount is the people involved. About 12 in total, and may be another 6 to 8 support roles. No more than 20 anyway. Six weeks ago, it would have been a dream, and today it is a reality. And also the vision and guidance from Paul and Sanjiva cannot be underestimated. And also the expertise of people like Azeez, Shankar, Amila and Dimuthu (and bunch of others).

Technology that we have build over the last couple of years also have helped us leap frog to this success in the cloud era. The design of the Carbon platform makes us so effective in our new designs and our ability to take up on brave new expeditions to unknown technology landscapes, and emerge successful at the end. Cloud effort has proven that the investment we have done on WSO2 Carbon was a very wise, timely and worthy. Not only that we have built technology that is unmatched by our competitors, but also WSO2 Carbon has helped us harvest a great set of skills in our team. I do not think that any company would be able to pull off this kind of a ground breaking innovative software release within this amount of time and with this amount of resources.

Personally I feel really happy, proud and content with what our team has done by today.
And as always, we have just begun. More excitement is yet to happen! There are much more to be done, and much more we are itching to achieve.

Welcome to the new era of cloud computing!!!

Tyrell PereraIntroducing WSO2 Stratos and Friends



What's Stratos? It's the cloud-native version of WSO2's award winning Carbon Platform. I emphasised cloud-native because there's a difference between that and just deploying a web application to a service like Amazon EC2. Cloud-native implies five things ...
  1. Elasticity: Stratos manages your underlying cloud infrastructure to seamlessly handle the scalability demands of your application.
  2. Multi-tenancy: Departments, developer groups, or projects run fully independently, but share the same middleware platform for maximum resource utilization.
  3. Billing and Metering: Each tenant can meter their actual resource use for internal billing purposes.
  4. Self Provisioning: Authorized users can provision new tenants from a web portal in moments.
  5. Dynamic Discovery: Linking up services that reside in a dynamic and elastic environment can be tricky but Stratos simplifies and automates this process with standards-based service
    discovery and automatic configuration capabilities.
  6. Incremental Testing: Cloud fundamentally changes the way you test and deploy applications, but doesn't reduce your quality requirements! Stratos allows you to deploy service versions side by side and carefully dial up the traffic sent to each version.
With this initial release of Stratos, we have WSO2 Mashup Server, WSO2 Gadget Server, WSO2 Application Server, WSO2 Governance Registry, WSO2 Identity and WSO2 BAM as cloud-native instances running together seamlessly integrated. An organisation can create a tenant, activate the applications of choice and be immediately on their way.

We will be adding WSO2 ESB and other products to Stratos in the coming days. So stay tuned :)


Footnotes