Uploaded image for project: 'Axis2'
  1. Axis2
  2. AXIS2-5463

Optimizations for Axis2 POJO web services

    XMLWordPrintableJSON

    Details

    • Type: New Feature
    • Status: Open
    • Priority: Minor
    • Resolution: Unresolved
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: adb, kernel
    • Labels:
      None

      Description

      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).

        Attachments

        1. POJO_optimizations.patch
          221 kB
          Prabhath Suminda

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              prabhath Prabhath Suminda
            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated: