Fast @Converter loading in uber-jar
-----------------------------------
Key: CAMEL-4009
URL: https://issues.apache.org/jira/browse/CAMEL-4009
Project: Camel
Issue Type: Improvement
Components: camel-core
Reporter: Arkadi Shishlov
Priority: Minor
Attachments:
apache-camel-r1127037-fast-TypeConverter-loading-in-uber-jar.diff
Currently, the @Converter converters are loaded as follows
{noformat}
for package in TypeConverter meta-inf resource
get package url from classloader
if url is jar
for entries in jar
if entry match package
check annotation
{noformat}
This is very inefficient approach when application is packaged into uber-jar as
expensive iteration is performed multiple times over same jar.
The attached patch changes loop into:
{noformat}
for package in TypeConverter meta-inf resource
get package url from classloader
create map url -> package names
for url in distinct url
if jar
for entries in jar
for package in packages
if entry match package
check annotation
{noformat}
With this patch I was able to cut startup time significantly from 15sec spent
on @Converter-s load to 2sec on 45MB 29k entries uber-jar.
I understand that the solution is not pretty but resolves a very practical
problem. Let me know if you want me to polish it and update the javadoc.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira