[
https://issues.apache.org/jira/browse/AXIS2-4974?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Sagara Gunathunga resolved AXIS2-4974.
---------------------------------------
Resolution: Fixed
According to SVN history this also fixed with AXIS2-3341.
> Unnecesary JAXBContext creation during request processing
> ---------------------------------------------------------
>
> Key: AXIS2-4974
> URL: https://issues.apache.org/jira/browse/AXIS2-4974
> Project: Axis2
> Issue Type: Bug
> Components: jaxws
> Affects Versions: 1.5.2
> Environment: Axis2-jaxws
> Reporter: Victor Downs
> Labels: bug, jaxb, performance
>
> Here at my job we've been using Axis2 since version 1.4.1
> During the design phase of our last project we decided to try JAXWS. The
> project is now in production, but users reported slower performance overall
> compared to previous versions of the same service. Another colleage
> reengineered the project to use ADB and tested it, obtaining a performance
> increase of 10x (!!). Unfortunately we cannot revert to ADB since both ADB
> and JAXWS generate the WSDL with slight (but incompatible) differences, which
> would require a code re-write on the clients' side.
> Long story short, I profiled the application and noticed that a new
> JAXBContext was instantiated about 4 times per client request, consuming
> about 60% of CPU time, so I downloaded and debugged the axis2-jaxws module,
> finding what I think is a bug on the JAXBContext cache handling code.
> Around linke 272 of JAXBUtils class we find this (comments are mine):
> /*272*/ softRef2 = jaxbMap.get(validPackagesKey); //
> Get validPackagesKey from cache
> /*273*/ if (softRef2 != null) { // Key found?
> /*274*/ map2 = softRef.get();
> /*275*/ }
> /*276*/ if (map2 == null) { // Map not found?
> /*277*/ map2 = new ConcurrentHashMap<ClassLoader,
> JAXBContextValue>();
> /*278*/ softRef2 =
> /*279*/ new
> SoftReference<ConcurrentHashMap<ClassLoader, JAXBContextValue>>(map2);
> /*280*/ jaxbMap.put(key, softRef2); // ERROR (I
> think) => New map inserted with key instead of validPackagesKey!!
> /*281*/ }
> I recompiled the jar changing 'key' for 'validPackagesKey' on line 280,
> replaced the original JAR and re-tested. New JAXBContext's are only created
> during the first invocation and performance is now comparable to the ADB
> version (10 times better). We still have to make regression tests on QA to
> ensure that this change doesn't affect anything else, but I though I should
> let you know about this.
> The fully qualified name of the affected class is
> org.apache.axis2.jaxws.message.databinding.JAXBUtils, and the version we're
> currently using is Axis2-1.5.2
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
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]