[ 
https://issues.apache.org/jira/browse/CXF-8028?focusedWorklogId=237981&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-237981
 ]

ASF GitHub Bot logged work on CXF-8028:
---------------------------------------

                Author: ASF GitHub Bot
            Created on: 06/May/19 18:19
            Start Date: 06/May/19 18:19
    Worklog Time Spent: 10m 
      Work Description: dkulp commented on pull request #550: CXF-8028: try to 
fix performance for very big document in DOMUtils
URL: https://github.com/apache/cxf/pull/550
 
 
   
 
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


Issue Time Tracking
-------------------

    Worklog Id:     (was: 237981)
    Time Spent: 20m  (was: 10m)

> Performance problem with very big request 
> ------------------------------------------
>
>                 Key: CXF-8028
>                 URL: https://issues.apache.org/jira/browse/CXF-8028
>             Project: CXF
>          Issue Type: Bug
>          Components: Core, JAX-WS Runtime
>    Affects Versions: 3.3.0
>            Reporter: Gilles Diacon
>            Assignee: Daniel Kulp
>            Priority: Critical
>             Fix For: 3.3.2
>
>          Time Spent: 20m
>  Remaining Estimate: 0h
>
> I am using CXF as webservice client for years and since the migration of my 
> application from Java 8 to Java 11 I have noticed a performance degradation 
> on very big request
> after digging in the code I found following methods in {{DOMUtils.java}}
> {code:java}
> /**
>  * Try to get the DOM Node from the SAAJ Node with JAVA9 afterwards
>  * @param node The original node we need check
>  * @return The DOM node
>  */
> public static Node getDomElement(Node node) {
>     if (node != null && isJava9SAAJ()) {
>         //java9plus hack
>         try {
>             Method method = node.getClass().getMethod("getDomElement");
>             node = (Node)method.invoke(node);
>         } catch (NoSuchMethodException e) {
>             //best effort to try, do nothing if NoSuchMethodException
>         } catch (Exception e) {
>             throw new RuntimeException(e);
>         }
>     }
>     return node;
> }
> {code}
> CXF-7270 + CXF-7683 + CXF-7741 + CXF-7847
> when {{getDomelement()}} method doesn't exist on the Node, an exception of 
> type {{NoSuchMethodException}} is created which normally takes 1 milliseconds 
> (mainly used to fill the {{stacktrace}})
>  (similar problem for {{getDomDocumentFragment()}} method)
> but if the document is really big and contains more than 30'000 elements, the 
> repetitive creation of this exception could cost a some seconds ...
> I have fixed this performance by caching node without {{getDomElement()}} 
> method to avoid repetitive exception but I am not sure if it's a good solution
> can you help me with this performance problem?



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to