Prabhath Suminda created AXIS2-5463:
---------------------------------------

             Summary: Optimizations for Axis2 POJO web services
                 Key: AXIS2-5463
                 URL: https://issues.apache.org/jira/browse/AXIS2-5463
             Project: Axis2
          Issue Type: New Feature
          Components: adb, kernel
            Reporter: Prabhath Suminda
            Priority: Minor
         Attachments: POJO_optimizations.patch

I did some optimizations for the Axis2 POJO web services as an intern project 
in last two months. It was a research type project and its idea was to handle 
POJO web services without  using Java Reflection to improve the response time.
The method I followed to accomplish it was, when a POJO service is deployed, 
Axis2 generates a code which contains the logic to invoke that service. To 
generate this code Java reflection is used. In the run time service is invoked 
through the generated code for that service.
The generated code is like the code is like the code generated by wsdl2java 
tool using ADB. So the idea was to achieve the performance of ADB services for 
POJO services by this. In wsdl2java tool code is generated as .java files. But 
in this case those had to be generated as .class files because those have to be 
invoked at runtime. To do this I used a Java bytecode library called 
JavaAssist. 
Currently this new michanisam support most of the Java types like, primitives, 
Strings, arrays, lists, maps, enums, Java beans and data handlers. But its not 
mature enough like the existing mechanism and therefor i integrated it with the 
existing mechanism instead of replacing it. To use this new method a parameter 
can be added to the service descriptor like below. 
<parameter name=optimizedPOJO> true </parameter>. If this is included service 
invocation will done using the new mechanism and other wise usual procedure 
will be followed.

Attached patch contains the changes done by me. To test the new method one can 
apply this patch to a downloaded trunk in a local environment, build the trunk 
and create a new war file and deploy it. Then create a POJO service and add 
<parameter name=optimizedPOJO>true </parameter> to service descriptor and 
deploy it. 

Here the code will be generated as class files in the temp directory. If 
someone want to look in to them as Java code those can be written as text files 
in addition to .class files by uncommenting the FileUtils.writetoFile() 
statements in code generating classes (these classes are included in the patch).

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to