[ 
https://issues.apache.org/jira/browse/AXIS2-3010?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Deepal Jayasinghe resolved AXIS2-3010.
--------------------------------------

    Resolution: Fixed

fixed in current SVN

> BeanUtil Deserialize has exponential runtime error when deserializing arrays
> ----------------------------------------------------------------------------
>
>                 Key: AXIS2-3010
>                 URL: https://issues.apache.org/jira/browse/AXIS2-3010
>             Project: Axis 2.0 (Axis2)
>          Issue Type: Bug
>          Components: adb
>    Affects Versions: 1.2, 1.1.1
>         Environment: Windows xp, tomcat, java 1.5, running POJO services via 
> RPCServiceClient 
>            Reporter: Nathan Wray
>
> When an OMElement is deserialized into a POJO and the POJO has a 
> setter/getter pair with an Array parameter, the result object is created and 
> set into the POJO once for each member of the array.  So for example an 
> object with
>  String [] getHeaders()
>  void setHeaders(String[] h)
> where h[] is an array with 80 elements, the array h will be created 80 times 
> and setHeaders will be called 80 times rather than once.  This causes 
> incredibly poor performance.
> It appears to be due to a pattern where each child in the element tree causes 
> a jump back up to the parent and a re-creation of that array result.  This is 
> very easy to recreate by instrumenting a set method that accepts an array.
> I patched this locally in the 1_1_1 version of BeanUtil by changing line 283 
> from
>                     PropertyDescriptor prty = (PropertyDescriptor) 
> properties.get(partsLocalName);
> to
>                     PropertyDescriptor prty = (PropertyDescriptor) 
> properties.remove(partsLocalName);
> This removes the definition of the set method after it's called the first 
> time, so the remainder of the array elements don't cause the entire result to 
> be recreated over and over.
> I looked at the 1.2 code and this does not appear to be resolved.  The 
> performance impact in my case, with 4700 result objects in an array, with 
> each result object having a further array of 77 fields, was huge.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to