Tuesday, June 10, 2008

WSO2 WSAS -2.3 is out!

WSO2 Web services application server (WSAS) - 2.3 was released yesterday. It was an extremely tough release. We were given the June 10th deadline less than 2 weeks back (on 27th of May). There were major changes happened in core Axis2. We were supposed to ship with Axis2-1.4 which had not been gone through a rigorous QA/test cycle to verify compatibility with WSO2 WSAS. It was one of the most challenging test/QA cycles I have ever gone through. It is obvious that less than 2 weeks are not enough to do a full scale functional/regression test, no option, we had to mange somehow.

Milestone builds were planned to out for QA testing on every friday though it did not happen. There were a lot of regression issues and most of them were uncovered during the initial QA tests. Fixes were getting delayed and some blockers avoided exercising some major features until last moment. Worked around the clock to complete functional as well as regression testing.
During the last few days 2-3 release candidates were out in a day. :) We had to make sure the regressions are minimum in between RCs. Interoperability with other SOA frameworks such as .NET was one of the major requirements expected from WSAS-2.3 release. Interop test suites were already in place when we started test cycles. However, most of java test suites were out dated, no build scripts or failed in execution. Therefore we had to update some of them/write from scratch.
Automated ant based functional test-framework helped to do quick smoke tests. However, as I expected and believed, good/critical defects were always uncovered during manual tests.

WSAS-2.3 release can be considered as a true TEAM effort. Everyone worked hard to get the things done within the given extremely tough deadline. I'm confident that WSAS-2.3 will also be demonstrated the better product quality as in previous releases though everything done within short time.

Finally our effort and hard work paid off as the interop demo of WSAS was very successful at the Microsofts' TECH ED 2008.

One thing I should mention here is, if the deadline is fixed (if it is not negotiable) and the schedule is very aggressive with limited time allocated for testing, you have to forget some process bullshit and work hard to find more and more BUGS. Yes, Risks are apparent, however you have to set the expectations with your leads making sure everyone understands the constraints/issues clearly.

WSO2 WSAS-2.3 release can be downloaded from http://wso2.org/projects/wsas/java

From the WSO2 WSAS 2.3 - Release Note - 10th June 2008
======================================================

WSO2 WSAS is an enterprise ready Web services engine powered by Apache
Axis2 which offers a complete middleware solution. It is a lightweight,
high performing platform for Service Oriented Architectures, enabling
business logic and applications.
Bringing together a number of Apache Web services projects, WSO2 WSAS
provides a secure, transactional and reliable runtime for deploying and
managing Web services.

Key Features
------------
* Data services support - Expose you enterprise data as a services in a
jiffy
* WSAS IDE - Eclipse IDE integration
* Clustering support for High Availability & High Scalability
* Full support for WS-Security, WS-Trust, WS-Policy and WS-Secure
Conversation and XKMS
* EJB service provider support - Expose your EJBs as services
* Axis1 backward compatibility - Deploy Axis1 services on WSAS & Engage
advanced WS-* protocols in front of legacy services
* JMX & Web interface based monitoring and management
* WS-* & REST support
* GUI, command line & IDE based tools for Web service development


New Features In This Release
----------------------------
* Improved interoperability
* Improved Data Services support
* Various bug fixes to Apache Axis2, Apache Rampart & WSAS
* WSO2 Mercury Integration - A new WS-RM Implementation

Data Services - Bringing Enterprise Data to Web
-----------------------------------------------
* Service enable data locked in relational databases, CSV & Excel files
in no time
* Zero code. Simple descriptor file describes the data to service mapping
* Controlled access to your data
* Customizable XML output
* Benefit from REST & WS-* support
* Built-in Connection pooling support
* Supports exposing Stored procedures & functions
* Built-in caching
* Throttling - to ensure your database is never overloaded.
* Easy configuration via graphical console
* Test your services via Try-it tool

Training
--------

WSO2 Inc. offers a variety of professional Training Programs, including
training on general Web services as well as WSO2 WSAS, 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 WSAS, visit the WSO2 Oxygen Tank
(http://wso2.org)

How to do various things with WSAS - WSAS HOWTO
Series(http://wso2.org/library/2707)

For further information see the full release note
http://wso2.org/project/wsas/java/2.3/docs/release_notes.html

Monday, June 2, 2008

Paul Fremantle (WSO2 co-founder/CTO) is among world's best CTOs

Today Inforworld has published the list of top leaders for technology and management innovation - The best CTOs of 2008

It is with a great pleasure to inform you that Paul Fremantle is being recognized as one of 2008 InfoWorld Top 25 CTOs!

Congratulations Paul!!!!

Saturday, May 31, 2008

Exposing an Axis1 service through WSO2 WSAS

Do you want to make use of the powerful QOS features of Axis2 with your legacy Axis1 applications? Yes it is possible with WSO2 Web services application server. It allows easy deployment of any Apache Axis1-based Web service and engage advanced WS-* services, such as WS-RM and WS-Policy in front of legacy Axis1 services.
Lets see how we can use this cool feature.

Step 1

Write the service impl class.

package org.wso2.wsas.service;

public class Calculator{

public int addition(int x, int y){
return x+y;
}

public int multiplication(int a, int b){
return a*b;
}

public int subtraction(int c, int d){
return c-d;
}

public double division(double m, double n){
return m/n;
}
}


Compile and make a jar with the above class. Suppose it is Axis1resources.jar

Step 2

Write the deployment descriptor (*.wsdd) for your service impl class and save it as calculator.wsdd

<deployment xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<service name="Axis1calculator" style="wrapped">
<parameter name="className" value="org.wso2.wsas.service.Calculator"/>
<parameter name="allowedMethods" value="*"/>
</service>
</deployment>

Step 3

Start WSO2 WSAS (If you haven't downloaded it yet, get it from http://wso2.org/projects/wsas/java

Access WSO2 WSAS management console using https://localhost:9443 (Default admin user credentials are admin/admin)

Go to Services and service group management page and click on "Upload Axis1 service" link. You will be directed to the following page



Browse for the above calculator.wsdd and Axis1resources.jar and click on Upload. Axis1 service will be deployed on WSAS and you will get a confirmation message.

Step 4

If the deployment is successful, you will see the Axis1 service is shown in the services and service group management page.
Click on "Axis1calculator" service.
In the "Service Management" page, select "Tryit"
Invoke service using some inputs and see the output.

Sunday, May 25, 2008

HTTP Compression

I wasn't much aware of HTTP compression though I heard the term often. Thanks to a nice article written by Martin Brown, I was able to get a basic understanding as well as how to get Apache and IIS servers configured to use HTTP compression.
HTTP compression is an mechanism to utilize the available bandwidth effectively. HTTP protocol data is compressed before it is sent from the server. No specific configuration is required at the client side and server configuration is also relatively simple.
If you are involved in web performance testing, It would be worthwhile to get some knowledge on HTTP compression.

Saturday, May 10, 2008

Weblogic application classloading

We wanted to use our own stax parser implementation in a web application deployed on Weblogic 9.2. The user guides and BEA forums suggested two approaches.

1. Using weblogic.xml web application deployment descriptor with <prefer-web-inf-classes> element. Setting this to true allows a Web application to use our own version of a third-party class

2. Using filtering classloader
Here we are allowed to explicitly specify packages which are required to be loaded from the application. These packages can be listed in weblogic-application.xml

I tried both approaches separately in order to use wstx-asl-3.2.1.jar shipped with our application instead of loading weblogic stax parser.

Unfortunately, both class loading mechanisms failed to pick up our stax parser :(

We even tried to hack weblogic.jar by editing property files which tightly map the parser interface to the impl*. We extracted weblogic.jar and edited the stax impl class entries (i.e:- com.ctc.wstx.sax.WstxSAXParserFactory) of the following 4 files included in META-INF/services directory.
javax.xml.parsers.SAXParserFactory
javax.xml.stream.XMLEventFactory
javax.xml.stream.XMLInputFactory
javax.xml.stream.XMLOutputFactory

However, weblogic reported version conflicting issue when restarting server with the edited weblogic.jar.
I did not encounter these class loading problems with JBoss or tomcat. I'm uncertain about why it is such a pain in configuring a commercial product like Weblogic to use application specific packages.

Thursday, May 1, 2008

Gartner lists wso2 as a cool vendor in web technologies

WSO2 has been chosen as a cool vendor in web technologies by Gartner. More information can be found at Pauls' blog

Axis2 session management - Transport session

Apache Axis2 provides session handling capability using 4 session scopes; request, soapsession, transport and application. I have already blogged about application scope a few months ago.

Axis2 transportsession uses transport level session management techniques to manage sessions of a Web service. Life time of a session is governed by the underlined transport, not by Axis2 itself. If a service is deployed in a transportsession scope, then, there will be service instances for each of the transport session.

You can read my recent Knowledge base post on how to manage sessions with transport session scope here at wso2 oxygen tank.