Google Summer of Code 2009 Prposal
Charith Dhanushka Wickramarachchi
Computer Science and Engineering
Bachelor of Science (Engineering)
University of Moratuwa
Amila Chinthaka Suriarachchi
SMS Transport for Apache Axis2
Apache Axis2 is an opensource framework for webservices which is widely used today ,and its implementation is available in both java and c. Axis2 is independent of the underlying transports which takes the Messages to it.Axis2 Engine is concentrating on the SOAP processing. Users can select transports to suite their requirement and that transports are responsible for injecting Axis2Messages to the Axis2Engine.So Axis2 Engine is dealing only with this Axis2MessageContex build from the underlying transport framework.
SMS Transport for Apache Axis2 is a project focusing on implementing a SMPP support for Axis2java (And also it will able be used in Apache Synapse too Since Synapse uses the same axis2Transports ) by which Axis2 will be able to communicate with SMSCs (Short message service centers) or Any other Message centers that support SMPP . And also in this project it will make enable axis2 to communicate with Simple GSM modems.
Using that users will be able to invoke web services using Short messages and also will be able to receive alters , Notifications that are generated from a Service as Short Messages. This project will also be value to the Apache Synapse project with its Alerting and Eventing capabilities.
Apache Axis2 currently supports some transports like HTTP/HTTPS ,JMS,TCP,XMPP. SMS Transport for axis2 will Enable users to invoke webservices using a SMS and also to receive SMS which are generated using a Axis2 Service. This project will give support to SMPP protocol and also it will give support to send receive messages from GSM modems.
The Short Message Peer to Peer (SMPP) protocol is an open, industry standard protocol designed to provide a flexible data communications interface for transfer of short message data between a Message Center, such as a Short Message Service Center (SMSC), GSM Unstructured Supplementary Services Data (USSD) Server or other type of Message Center and a SMS application system, such as a WAP Proxy Server, EMail Gateway or other Messaging Gateway. So by having SMPP transport support axis2 will be able to communicate with those Message Centers to send/receive Short Messages.
- This project will mainly have following key features
- SMPP v3.4 support for the Transport receiver
- Receive SMS using attached GSM modems
- SMPP v 3.4 support for the Transport Sender
- Send SMS using attached GSM modems
Extensible to use other proprietary protocols so that users will able customize this to be used propitiatory protocols reusing the code. (Since there are many proprietary protocols that are currently being used by Message Centers to communicate with SMS application systems)
Since SMPP is a protocol that support to exchange short message details between the Message centers and and SMS applications giving support for that protocol will be useful in many practical situations where a lot of SMS data traffic is involved. And also I'll give capability to handle (send /receive) messages that are coming from GSM modems attached. This feature can be used in scenarios where the data traffic low .(Since when using a typical GSM modem the maximum message transfer rate is around 6 messages per minute)
- SMS transport for Axis2.
- Appropriate documentation to ensure the continuation and the improvement of the project in the future
- Test cases to make sure the desired functionality of different parts of the project and integration test for the SMPP support part.
- Sample guide to use this Transport with Axis2
The major design challenges as i see in this project are handling the payload size,Come up with a message format/formats and how to do SMS <--> Axis2MessageContext mapping. To come up with a good design i have to look at: possible real world use cases of this transport , The similar projects going on and the standards they are using (Eg: Apache ServiceMix is having a SMPP component). And It will be useful to discuss with the Axis2/Synapse dev list to find out the use cases and the limitations.
So in the initial stages I'm planing to talk with Axis2 and Synapse developers and come up with a design to implement the most required features for this transport. In this discussions i would like to discuss about the design constrains that we are going to enforce considering use cases. And also i am planing to discuss about the technologies that can be used to implement this (ex : SMPPAPI , jsmpp can be used to implement SMPP support)
At the start of the implementation phase I'll prepair a requirements and Specification document which will help me to track the progress while i m developing. And I'll be implementing the features according to design came up in the first phase while getting more feedback and ideas from the community. I'll be providing working features of the project as patches so that they can be reviewed regularly and will be able to committed to the axis2 transport project if needed.
In the final phase I'll fix the bugs that may encounter and write a sample guide to use this Transport by providing some samples. And also I'll write an integration test for the SMPP which will test all supported features of SMPP.
Following is a link to a Diagram that illustrates a Architectural Overview of the project
I will be able to use a EPR like sms://<senders_number> in Message sending back scenarios.
April 20 to May 18
Google have announced the first time period as the community bonding period.I m planing to use this to interact with the mentor and the other developers in the community to get much more familiar with the axis2 transport framework and get the feed back from the developer community regarding the technologies that can be used and how to address the design challenges
And also I'll be getting familiar with the related technologies like jsmpp ,SMSlib ,SMPP Api ,SMSCSim etc which will help me to quickly get into the project implementation.
May 19 to May 23
Come up with a Design and a requirements and Specification document after discussing reviewing with a Mentor and the developer community of Axis2 and Synapse.
May 24 to July 6
Implementing the SMPP support for the SMS transport and provide a patch to review.
This will be the longest phase of the project since in this phase i'll be implementing the most of the Message Building layers and protocol handling layers. And also in this period I'll be reviewing the design and the way I'm currently implementing the project with the mentor and the developers in the community
July 7 to July 31
Implementing a Sender and Receiver capability using GSM modem.And testing It with few famous mobile devices.
After giving the SMPP support giving message sending and Receiving capability it will be less time consuming since Message Builderss written in previous phase will be able to reused in this phase.
And also in this period I'll be start fixing bugs that will be reported and identified from the previous patch I provided.
August 1 to August 10
Writing an integration test for the SMPP transport support.
August 10 to August 17
Prepair samples and Sample guide for the Project and prepair the final patch to the axis2 transport project which will include documentation, Samples and Sample guide and the code with test cases.
I am a Third year Undergraduate at Department of Computer Science and Engineering , University of Moratuwa Srilanka .I have been working with web services related technologies for more than six months .I have worked with Apache Synapse project and Axis2 Project.I have done some contribution to Apache synapse the project as well.And Also I have worked with Axis2 jaxws module and i have a implementation level understanding of the Axis2 JAXWS module.
I have a good knowledge and experience in working with technologies like Apache Maven , Spring , JAX-WS , JAXB , AXIOM and JAVA JMX. Since I have been working with Apache projects for some time i'm have a good understanding of the Apache process as well. I have done a project "ESB for Spring Users (Spring DSL for Synapse)" for WSO2 which will enable Spring users to Configure Synapse in Spring.It will be released after the Synapse 1.3 release.
I'm interested in Open Source software development and Specially in web services area.And I'm willing to contribute to Apache Synapse and Axis2 in the future.And I m sure with my past experience in web services area I'll be able to finish this project successfully and contribute it to the Axis2 Transport project.
=== References ===