Jython extension for Apache Axis2
Abstract
Jython [8] is an implementation of the high-level, dynamic, object-oriented language Python seamlessly integrated with the Java platform. Jython is complementary to Java and is especially suited for the following tasks:
Apache Axis2 [10] is a core engine for Web services. It is a complete re-design and re-write of the widely used Apache Axis SOAP stack.Axis2 not only provides the capability to add Web services interfaces to Web applications, but can also function as a standalone server application.
Overview
Web services, is a technology to deliver the architectural style defined in SOA. Although there seems to be a general confusion about the relationship between SOA and Web services, it is important to know that Web services are an implementation methodology that adopts standard protocols to execute SOA. Web services include HTTP as the primary network protocol, SOAP/XML for the payload format and WSDL to describe the service interfaces. They rely upon such universally accepted standards like XML and SOAP, to provide broad interoperability among solutions belonging to different vendors.
There are two widely used techniques in Web service development, ie.
I have already done some work regarding Jython and Axis2. I developed the WSO2 Web Service Framework for Jython (WSO2 WSF-Jython) and released it under the Apache license. It is a Web Service Framework(WSF) that can be used to write Web services and Service Clients in Jython. The Framework is supporting Code First approach. You could download the code here [1]. I have written 2 articles based on this project [2][3].
To support Contract First approach you need to be able to generate a skeleton and a message receiver for your service. The generic message receiver that I have already written will not work because it works only on a limited schema structure. We could use the existing infra in Axis2 to do this. Axis2 creates an intermediate XML structure representing a WSDL and we have to run 2 XSLTs [9] on that to create the skeleton class and the message receiver. Then with the help of the 2 XSLTs we could use existing infra in Axis2 to support Contract First Web services in Jython. At the end of this project, this extension will support both Code First and Contract First approaches.
Intended outcome of the project
Contract First Design Advantages
Project Plan
I have planned the project under 4 steps as follows.
Step 1: Initial Planning and Designing
Come up with a basic design.
Estimated Completion: 21st May 2009
Step 2: Implementation
I would start working on the code.
Deliverable(s): Prototype and documentation for mid evaluation
Estimated Completion: 2nd July 2009
Step 3: Improvements and Testing
Modifications or improvements suggested at the mid evaluation would
be completed in this step.
Deliverable(s): Prototype including tests
Estimated Completion: 6th August 2009
Step 4: Final Product and Documents
With the completion of this step, will finish the axis2 extension which will support Contract First approach. Necessary documents would also be present with the final product.
Deliverable(s): Final product and documentation
Estimated Completion: 13th August 2009
Biography
I am a final year Computer Science undergraduate at University of Colombo School of Computing (UCSC) [7], Sri Lanka. I have been involved in Open Source development regarding Web Services based on Apache Axis2. I have been working with the whole umbrella of Web Service projects [4] at Apache. Following are the open source projects that I have done.
WSO2 Web Service Framework for Jython : WSO2 WSF/Jython [1] provides an amazingly simple approach to create (Code First) and consume Web services in Jython. This framework integrates the Apache Axis2 Web services engine to Jython.
Basic Security Profile (BSP) 1.0 Validation for Apache Rampart : Apache Rampart [6] is the security module of Axis2. It implements Web Service Security, WS-Secure Conversation, WS-Trust and WS-Security Policy specifications. Purpose of this project was to implement a handler in Rampart which validates the incoming messages for BSP 1.0 standards. I successfully completed this project [5] as my GSoC 2008 project.
Why I am the best candidate for this Project
I'm really passionate about Open Source Software development and I have already successfully completed a GSoC project. I have already released a project based on Jython Web services under Apache License. My prior knowledge in Apache Axis2, Java, Jython and Python will make me the ideal candidate for this project.
References
[1] - http://wso2.org/projects/wsf/jython
[2] - http://wso2.org/library/invoking-enterprise-web-services-using-jython
[3] - http://wso2.org/library/articles/deploying-python-service-axis2
[4] - http://ws.apache.org/
[5] - http://wiki.apache.org/general/HeshanSuriyaarachchi/GSoC2008/proposal