Projects:Callout Performance Improvements/Specs
Contents |
Functional Requirements
The main functional requirement of this project is to improve the time spent in callout invocation in general . Also, it will be an effort to improve the SimpleCallout in particular.
This project will not add new features, the changes involved within this project should be transparent for callouts: they must continue working as usual.
Technical Specs
General Performance Improvements
There are some general improvements that will be applied for the callouts infrastructure itself. They all help to reduce the time spent in callouts invocation. It have been checked that there exists an overhead when a callout is executed. This is the time that should be reduce or remove. For more information see this spreadsheet.
Callouts infrastructure
At first, a refactor should be done in runCallouts method in order to avoid some unnecessary reflective invocations. See changeset in temporal repository of the project.
SimpleCallout improvements
The main goal of this project is to reduce overhead time related with legacy implementation of callouts as a Servlets. To avoid this overhead, SimpleCallouts should build directly result as a JSONObject instead of a StringBuilder. This should avoid managing a false request, parser the fake respose,...
IMPORTANT NOTE: These improvements are focused in SimpleCallout callouts. SimpleCallout callouts are 40% of callouts located in src/org/openbravo/erpCommon/ad_callouts. |
Extended features
In addition to existing features, new capability will be implemented within the scope of this project.
Make the SimpleCallouts extensible
This new capability should make possible that a SimpleCallout extends from other SimpleCallout in an easy way.
public class prefix_name_callout2 extends prefix_name_callout1 {
For more information of this feature see How to create a callout that extends from another callout .
Closed topics
It is pending to review this list of issues are working with new changes:
- Issue 29849: Not possible to overwrite the result of a callout from your own callout using a requestdispatcher an a decorator.
Status: Pending