cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Daniel Kulp (JIRA)" <j...@apache.org>
Subject [jira] [Assigned] (CXF-4703) CXF loading performance
Date Fri, 14 Dec 2012 15:30:12 GMT

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

Daniel Kulp reassigned CXF-4703:
--------------------------------

    Assignee: Daniel Kulp
    
> CXF loading performance
> -----------------------
>
>                 Key: CXF-4703
>                 URL: https://issues.apache.org/jira/browse/CXF-4703
>             Project: CXF
>          Issue Type: Improvement
>          Components: Bus
>    Affects Versions: 2.7.0
>         Environment: CXF with Spring on Tomcat server
>            Reporter: E Chaplet
>            Assignee: Daniel Kulp
>              Labels: performance
>   Original Estimate: 1h
>  Remaining Estimate: 1h
>
> Context : A lot of beans managed by Spring (more than 2500 beans) and about 120 endpoints
managed by CXF
> The loading time of the 120 web services is approximately 4 minutes, too long for me
!!
> I identified an area for improvement :
> * CXFBusImpl
> Slowness comes from getExtension(Class<T> extensionType) method
> => loc.getBeansOfType(ExtensionType);
> Here, Spring is looking for beans of a Class in his big context...
> Great, but if no beans are found, the next time this method is called with the same Class,
this method is looking again in Spring beans (by getBeansOfType) !!!
> it can be easily improved by adding an emptyBeanExtensions Set which goal is to identify
wich Class has no Spring beans.
> Exemple (I saved more than 1 minute loading time with this code):
> public final <T> T getExtension(Class<T> extensionType)
>     {
>         Object obj = extensions.get(extensionType);
>         if (obj == null && !emptyExtensions.contains(extensionType))
>         {
>             ConfiguredBeanLocator loc = (ConfiguredBeanLocator) extensions.get(ConfiguredBeanLocator.class);
>             if (loc == null)
>             {
>                 loc = createConfiguredBeanLocator();
>             }
>             if (loc != null)
>             {
>                 //force loading
>                 Collection<?> objs = loc.getBeansOfType(extensionType);
>                 if (objs != null)
>                 {
>                     if (objs.isEmpty())
>                     {
>                         emptyExtensions.add(extensionType);
>                     }
>                     else
>                     {
>                         for (Object o : objs)
>                         {
>                             extensions.put(extensionType, o);
>                         }
>                         obj = extensions.get(extensionType);
>                     }
>                 }
>             }
>         }
>         if (null != obj)
>         {
>             return extensionType.cast(obj);
>         }
>         return null;
>     }

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message