Tuesday, July 22, 2008

Feel the taste of Rules with Axis2 – Rule Services

As I always tell , Axis2 architecture is so flexible , so you can do almost anything with Axis2. We have a number of extension for Axis2, such as

  • Data base extension
  • JavaScript extension
  • JRuby extension
  • Jython extension
  • Shell script extension and so on

Not stopping from there , we recently add one more extension to Axis2. Which is deploying “Rule services” in Axis2. We support most of the Rule engine , and you can configure your rule services to the rule engine you want and deploy that in Axis2 or WSO2 WSAS. As an example you can deploy Drools with this extension.

We have created a demo and hosted that in my home directory , and which has all the instruction you need to try the service. Try that and give us the feedback so that we can improve that and build complete Rule Service extension on Axis2.


Demo link : http://ww2.wso2.org/~deepal/drule/

Monday, July 21, 2008

Beauty and power of JavaScript – WSO2 Mashup server

WSO2 Mashup server is a web services application server which has tuned to deploy JavaScripts as web services. Which is also build on WSO2 WSAS (which is in fact built on Apache Axis2). In addition to the WSAS , Mashup sever also uses WSO2 Registry.

With WSO2 Mashup sever we can deploy JS as Web services , as well as invoke any service from JS client. In addition to this it has a number of cool features as well.

WSO2 Mashup team did their 1.5 release recently , you can try that out. It is totally free and release under Apache License.



==================================================================

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 has been
released under the Apache Software License 2.0.

This release can be downloaded from http://wso2.org/projects/mashup

WSO2 Mashup Server 1.5 - Release Note - 21st July 2008
======================================================================
"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.

The WSO2 Mashup Server will form the backbone of a become an ecosystem of
community-developed services that will broaden the palette of capabilities
for mashups and distributed applications.

WSO2 Mashup Server is released under the Apache License v2.0

Check out the project home page at http://www.wso2.org/projects/mashup for
additional information.

--------------------------
Features List
==========================
* 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
- 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
* Simple sharing of deployed mashups with other WSO2 Mashup Servers
* Mashup sharing community portal (http://mooshup.com) to share and host
your
mashups


--------------------------
New In This Release
==========================
* Request object
* Ability to secure hosted mashups using a set of commonly used security
scenarios
* Ability to call secured services using the WSRequest host object
* Integrated Data Services Support (expose data locked up in DataBases,
Excel spreadsheets and
CSV files with ease)
* OpenID login support
* Apache Shindig powered, Google compatible, per-user Dashboard and
browser based editor support
for developing gadgets for hosted mashups (http://wso2.org/library/3813).

-------------------------
Known Issues
=========================
* Management Console was tested only on IE 6/7 & Firefox 1.5/2.0/3.0.
* Inter-service dependencies using the dynamically generated stubs may
give
deployment time errors. Workaround would be to save a local copy of the
stub
in to the dependent service.
* JSON support lacks try-it support
* Mashup editor will convert < and > characters to <> while
saving the code in the
server. This might result in malformed xml. Using these special
characters with caution is adviced.
Refer http://wso2.org/jira/browse/MASHUP-607.
* Built-in samples cannot be secured - the built-in "sample" user does
not have a keystore associated with it
(system services use the keystore of the primary account.)

---------------------------------
Future Directions
=================================
* Improved tooling support.
* An expanded toolkit of generic building-block services.
* Deep registry integration including governance, rollback, dependency
analysis, etc.
* Lots more cool stuff.

------------------------
Reporting Problems
========================

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


------------------------
Contact us
========================

WSO2 Mashup Server developers can be contacted via mailing lists:
For Users: mashup-user@wso2.org
For Developers: mashup-dev@wso2.org
For details on subscriptions: http://www.wso2.org/projects/mashup#mail

Questions can also be raised in this forum: http://www.wso2.org/forum/226


Now wouldn't it be nice to have WS02 integrated on our web hosting service rather than going through shell. Maybe in the future this will be an option.

WSO2 Web Services Framework for Perl 1.1 Released

WSO2 Web Services Framework for PHP (WSO2 WSF/Perl), is an open source,
enterprise grade, Perl extension for providing and consuming Web
Services in Perl. WSO2 WSF/Perl is a complete solution for consuming
Web services and is the only Perl extension with the widest range of
WS-* specification implementations. It's Key features include, clients
with WS-Security support, binary attachments with MTOM.

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

Project home page:
http://wso2.org/projects/wsf/perl


------------
Key Features
============

1. Client API to consume Web services
* WSMessage class to handle message level options
* WSClient class with both one way and two way service invocation
support

2. Attachments with MTOM
* Binary optimized
* Non-optimized (Base64 binary)

3. WS-Addressing
* Version 1.0
* Submission

4. WS-Security
* UsernameToken and Timestamp
* Encryption
* Signing
* WS-SecurityPolicy based configuration

5. WS-Reliable Messaging
* Single channel two way reliable messaging

6. REST Support
* Expose a single service script both as SOAP and REST service


-------------------
Reporting Problems
===================
Issues can be reported using the public JIRA available at:
https://wso2.org/jira/browse/WSFPERL

Thursday, July 17, 2008

Scripting support with Axis2

As we all know Apache Axis2 is a Java based Web service framework. In addition to that Axis2 is becoming as the de facto Java based Web service framework. Which is obvious when we look at the number of daily downloads as well as a number of companies who use Axis2. It took about four years to come to this position with great support from the community.

Now we can find a number of scripting languages which run on JVM. If a scripting language is running on the JVM then we can easily write scripting extension to Axis2. At the moment Axis2 has scripting extensions for;

Meaning of language extension is , one can deploy scripting services in Axis2 as well as one can use scripting language to invoke or access a service deploy in anywhere.

With the Axis2 architecture , we can easily plug a new language extension. It is just a matter of writing few components and registry in Axis2.

  • Deployer – to process the scripting file and create a Web service from that
  • Schema generator – Generating schema from the scripting class , for example if we are deploying a JS file , then generate corresponding WSDL
  • Message Receiver – when a message receive for that particular service , it will first come to the message receiver and that will invoke the scripting class and send the response if any.
Registering an extension in Axis2 is just a matter of adding your custom deployer in to axis2.xml.

If you're getting a new host, don't forget to check your hosting service if it supports Axis2.

Monday, July 14, 2008

Spring Web services and Axis2

As you know Axis2 is a Web service framework which has support many things. It has support for scripting languages , it has support for data services and it has support for EJB , Corba and etc. In addition that since a long time it has support for Spring as well. With that you can deploy Spring bean as Web services in Axis2. Yes I agree it is yet another way of getting the thing done. I also realized that is not enough for spring developers. They need everything works on spring.

To solve that in WSO2 we came up with a solution where we have integrated Axis2 into Spring. When doing this we have convert all the axis2 configurations files into bean descriptors , for example we came up with a set of beans for axis2.xml. With this we have integrated Axis2 smoothly into Spring. After thing anyone can easily expose a bean as a Web service. And get the power of all the other WS* support , such as security , reliability etc. , above all you can get the power of Axis2 while you are in spring container.


With this approach you can make a bean into a Web service just using following line of codes



<bean id="services" class="org.wso2.spring.ws.WebServices">
<property name="services">
<list>
<bean id="helloService" class="org.wso2.spring.ws.SpringWebService">
<property name="serviceBean" ref="helloworld"></property>
<property name="serviceName" value="helloWorldService"></property>
</bean>
</list>
</property>
</bean>

You can read more about Spring support from the following links

WSO2 Web Services Framework for Spring

Hello World with WSO2 WSF/Spring

Sunday, July 13, 2008

Announcing: New Google C++ Testing Framework

The folks at Google have recently open-sourced their xUnit-based testing framework for C++ development. The framework is said by project developer Zhanyong Wan to have been in use internally at Google for years by thousands of their C++ developers.

Read the full story

Multiple source directories with maven2

Without any doubt I can tell that Maven and Maven2 are very powerful project management tool, specially very useful for project building.

As I remember correct in maven1 it had a way to add multiple source directories , however when I switch to maven2 , I found that it does not have support for multiple source directories by default. Recently I got the requirement of adding multiple source directories for WSO2 Registry sample module. That module has few sub directories and I do not need to treat them as module. What I wanted was to add them as source directories in the sample module. So when I do the googling I found a very cool maven pluging called “build-helper-maven-plugin” , which helps us to add multiple source directory to a single module.

Structure of the sample module is as follow;


samples
-- handler-sample
--src
-- filebased-sample
--src
-- wsdl-sample
-- src
-- collection-handler-sample
-- src
-- custom-ui-sample1
-- src

So the corresponding pluging configuration is as follows



<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.1</version>
<executions>
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>handler-sample/src</source>
<source>filebased-sample/src</source>
<source>wsdl-sample/src</source>
<source>collection-handler-sample/src</source>
<source>custom-ui-sample1/src</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>

Friday, July 11, 2008

Failures in Agile Develoment

As Agilists we love to talk about our successes but its much harder to talk about failure.

Read the full story

Thursday, July 10, 2008

Apache ODE 1.2 Release

The Apache ODE community is proud to announce its latest 1.2 release
that includes many new features, improvements and bug fixes. Apache ODE
is a WS-BPEL compliant web services orchestration engine. It organizes
web services calls following a process description written in the BPEL
XML grammar. Another way to describe it would be a web-service capable
workflow engine.

Highlights of this release:

* External variables: variables used in a process are not opaque to
the outside world anymore. You can map them to a simple database table
and manipulate them directly.
* Support for the WSDL HTTP binding. We've also added a few
extensions, allowing the invocation of REST-style web services.
* Advanced endpoint configuration which, thanks to the integration
with Apache Axis2, enables WS-Security and WS-RM support.
* A long list of small fixes and improvements for best-of-breed
stability, performance and usability.

In addition to these new features, Apache ODE provides the following
functionalities:

* Side-by-side support for both the WS-BPEL 2.0 OASIS standard and the
legacy BPEL4WS 1.1 vendor specification.
* Supports 2 communication layers: one based on Axis2 (Web Services
http transport) and another one based on the JBI standard (using
ServiceMix).
* High level API to the engine that allows you to integrate the core
with virtually any communication layer.
* Hot-deployment of your processes.
* Compiled approach to BPEL that provides detailed analysis and
validation at the command line or at deployment.
* Management interface for processes, instances and messages.

For more information, check the Apache ODE website: http://ode.apache.org/.

Apache ODE is an open source project released under a business-friendly
license (Apache License v2.0), as such we welcome all your help and
contributions. To participate and get involved, our mailing lists are
the best resources to start from: http://ode.apache.org/mailing-lists.html

SOA triple play: Policy meets Semantic Web

Triples, a programming grammar developed by W3C for its Semantic Web initiative, is incorporated into WSO2's newly released Registry 1.1. The open source SOA vendor is moving toward a triples-based language that will allow users to encode their own governance rules and policies.

Full story

Wednesday, July 09, 2008

Google open-sources data exchange language

"Google uses "thousands of different data formats to represent networked messages between servers, index records in repositories, geospatial datasets, and more," wrote Kenton Varda, a member of Google's software engineering team, in a blog post. "Most of these formats are structured, not flat. This raises an important question: How do we encode it all?""

Read full story.

Let's wait and see how we can use these in our applications .

Tuesday, July 08, 2008

SOA and Open source ESB

As I have mentioned in my previous posts , SOA is becoming the next generation of the IT industry. Not only that Web services provide major contribution to that. Just having Web services does not make SOA complete. There are a number of factors which are necessary for making SOA complete , or moving company into so called SOA.

When a company want to move into Web services , one of the first thing they need to focus on is the web service framework they are going to use. There are number of good open source and commercial web services frameworks around , you can pick one which match with your requirement and then enable Web services in your company. If you are looking for an open source solution then Apache Axis2 would be a good candidate. I am not recommending Axis2 , since I am an Axis2 developer , but it so extensible , flexible as well as easy to use , above all it inteoperates with other open source and commercial web services stacks.

In one of my previous post I mentioned about one of the other key part of SOA , which is SOA registry. And recently I did a feature comparison on WSO2 registry as well as Mule Galaxy.

Next major component which make SOA complete is ESB or Enterprise Service Bus. There is no clear definition for ESB , different people have different opinions on that. In my view ESB is a bus which connect different kind of applications together and provide a way to talk to them in application independent manner. Web service provide right infrastructure for that providing SOAP based interaction. With ESB one can talk to different kind of applications and can connect different kind of applications. For example we can connect data service , main frames and messaging queue together using an ESB.

The requirement of ESB depends on the type of application you have , if you have just Web service application then you might not need an ESB, however if you have different kind of applications (say Java and non-Java applications) , then to connect such application we need an ESB.

There are a number of ESB out there , and you can find both commercial and open source ESBs. It is not surprise to see that open source ESB performs better than some of the commercial ESBs. WSO2 recently did a performance comparison , you can read them and make your decision. In Apace domain , there are two ESBs , Apache Synapse and Apache ServiceMix.

Apache Synapse (or WSO2 ESB) is built on Axis2 and ServiceMix is built on CXF. I like Apache synapse due to few reasons , first it is built on Axis2. Second I was able to write the very first synapse toy based on the current architecture , third it seems to be the fastest ESB.

Sunday, July 06, 2008

Axis2 based open source Application server – WSO2 WSAS

There are different types of application severs , not only that when we say Application server , then the default meaning is J2EE application server. Then how about Apache Tomcat ? , well we all tell it is also an application server. Then what is WSO2 WSAS , is it an application sever , yes which is also an application sever , however the difference is rather than deploying generic applications (web applications) , it allows us to deploy a particular type of application. Which is web services.

WSAS stands for Web Services Application Server , as I mentioned earlier which is a sever where we can deploy Web service. I know Axis2 is very flexible and easy to use Web services framework. Not like Axis1 , getting stuff done with Axis2 is very easy as well. If we want Reliable messaging , then its just a matter of coping Sandesha mar and deploy that , same for the security as well. You do not need to have any global configurations.

Then why do we need WSO2 WSAS ?

The answer to that questions is very simple , if you download Axis2 then you only get Axis2 or Web service support. Then how about if you want to enable security of reliability , then you have to download those libraries and configure. When it comes to WSAS , it has done all those for you. Not only that it provides a very nice UI to configure one of the very difficult and complex part in Web services , which is WS-Policy.

If we look at the features of WSAS , we can find a number of thing , but among those there are few features which I really like as Axis2 developer.

  • Run time transport configuration – WSAS allows you to add , stop and run transport at the runtime
  • Clustering support – Which has very good support for both context replications (action associate with context hierarchy) and description management (action associates with description hierarchy such as AxisService , AxisOperation and etc ).
  • Message logging – We can easily turn of turn on the message logging and see what are the message going here and there. This is really cool and handy for the transports other than HTTP.
  • Code generation with maven build file – I found this is really cool , because when we give the WSDL it generates the code , compile that and generate a maven file. So that I can just run that and get the job done.
  • Data service support – With WSAS we can easily expose a database as a Web service

Well there are many more features that you might find useful for you. If you are an Axis2 user try with WSAS as well , that might help you to reduce some of the work you do with Axis2.


WSO2 WSAS became Products of the Year 2007


Scaling Java EE Applications

Wang Yu , has written a very interesting and useful article about the Java EE application scalability and their issues.

"If an application is useful, then the network of users will grow crazily fast at some point. As more and more mission-critical applications are now running on Java EE, many Java developers are caring about scalability issues. However, most of popular Web 2.0 sites are built with script languages, and there are a lot of voices to doubt the scalability of Java Applications. In this article, Wang Yu takes real world cases as examples to explain ways on how to scale Java applications based on his experiences on the laboratory projects, and at the same time, bring together practice, science, algorithms, frameworks, and experience on failed projects, to help readers on building high scalable Java applications."

See the full article

Thursday, July 03, 2008

Why companies are reluctant to use Open source

One thing is obvious that the future of software is nothing but open source. Time has come to the point where ability of competing with open source products is not an easy task anymore (to whom ? ) . Knowing this fact most of the well know companies are either moving to open source , making their source open , contribute to open source projects , or acquire open source companies.

If we look at the todays market it is obvious that the open source has more than enough influence in the industry as well as it has gained the recognizing , there are the people who decide the future of the industry. To get the idea more clear let's have a look at some of the well know open source projects

  • Apache Web server – no doubt which is most famous Web server
  • Apache tomcat – Application server , we all know and we all use
  • Linux and Ubuntu – World famous open source operating systems
  • Eclipse – Widely used Java IDE
  • Open office – We all use open office
  • And many more ....


I know I can name dozens of products , but which is not the idea of this post.

There was a myth saying that “do not use open source , since no support” , do you think this is true anymore ? If so you think so than you are wrong. Now we can find companies doing open source consultants , services and supports , so no need to worry about the support. In addition to that if you look at the mailing list you can see the level of supports you get. For example if you look at the Axis2 and Synapse mailing list you will realize the difference, not only on those two list most of the Apache mailing list are so active and you can get very good support.

In addition to that from one of the mailing list I saw that someone is telling that the level of support he got is much more better than the support he gets from a commercial product. This is just an example for you to understand the trend.

Yes , I agree there is a mindset that some of the people have that the open source products are not good and not in the right quality. They always want to use the products from well known companies. The reason is they only trust the projects from those companies. IMO which is also a myth , the reason I am telling this is , if we look at an open source project which has a very good community. And all most all the time that community is consisting with very well know personality in a particular area. So the out come of that is obvious. Even the quality is good and always projects meets the standards , and might intemperate with other open source projects as well as commercial projects.

When we look at the level of support , quality of the products , number of features , meets of standards , there is no single reason not to use open source. Sometime you can use some of the projects without getting any support. Because you can find very comprehensive documentations about the projects , if you have any problem you can read and understand easily. In addition to that project like Apache Web server , Apache tomcat , Apache Axis2 are matured projects and number of people use the projects is countless.

Nothing to worry , no need to reluctant about open source. Use it , help it , contribute it and benefit from that.

Future is open source !!!!

Wednesday, July 02, 2008

Seven Reasons to Move to Linux

Linux is a great solution for small business customers because it helps them avoid high licensing costs, viruses, vendor lock-in, hardware upgrades and unstable servers and desktops.

See the full story.

Open source competition - Mule Galaxy vs WSO2 Registry

Competition is everywhere , it does not matter whether commercial or open source different people tries to compete with others. Not only in different domains , in same domain as well. If we look at in Apache there are two well know Web services frameworks (Axis2 and CXF) , and there are two Enterprises Services Buses (ESB) (Synapse and ServiceMix) . Those are just simple examples for the competition we have in same domain. As I mentioned in one my previous blog , open source is a social activity. Therefore better the quality of the product , then thats good for the end users. So in my view having competition is very good even among the open source vendors.

WSO2 released its Registry/Repository product in recently , in the mean time Mule source released their Registry/Repository product in few days back. So yesterday I download Mule galaxy and play with and went through its feature page. Then I realized that both the implementation are doing all most the same thing , almost the same manner.

So I started to write a blog yesterday doing a comparison between WSO2 registry and Mule Galaxy , unfortunately it become a too long , so rather than writing everything in my blog I wrote and publish an article. Have a look at the features of the two products and see which one suit for you.

Read more about that .

Web future and Semantic Web

Semantic Web is around in the field for few years and most of the well know universities are doing research on the filed of semantic Web. Among them universities like MIT , UMBC have done very good progress as well. Though it is around for that many years I do not see that much adaption in the industry , one reason could be it is still in the research level.

When I was doing some reading on the semantic web I found a few very useful documents.

  • A presentation by Prof Tim Berners-Lee .
  • The Semantic Web provides a common framework that allows data to be shared and reused across application, enterprise, and community boundaries. You can think of the Semantic Web as an efficient way to represent data on the World Wide Web, or as a database that is globally linked, in a manner understandable by machines, to the content of documents on the Web. Semantic technologies represent meaning using ontologies and provide reasoning through the relationships, rules, logic, and conditions represented in those ontologies. Read more
  • Some serious computer scientists, although cautious about the promise of the Semantic Web, are ultimately optimistic that it will be everything developers are hoping for -- an online source for all of the knowledge humanity has created in science, business and the arts Read more