cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Neal Hu (JIRA)" <j...@apache.org>
Subject [jira] [Created] (CXF-6865) Add cache for target resouce method matching
Date Wed, 13 Apr 2016 02:52:25 GMT
Neal Hu created CXF-6865:
----------------------------

             Summary: Add cache for target resouce method matching
                 Key: CXF-6865
                 URL: https://issues.apache.org/jira/browse/CXF-6865
             Project: CXF
          Issue Type: Improvement
          Components: JAX-RS
    Affects Versions: 3.0.9, 3.1.6
         Environment: mac, windows
            Reporter: Neal Hu
             Fix For: 3.0.10, 3.1.7, 3.2.0


Find the target resouce method in JAXRSInInterceptor is time comsuming:
JAXRSInInterceptor.java:159==>JAXRSUtils.selectResourceClass(resources, rawPath, message);
Adding cache for the ori, matchedvalues and mediatype will improve the performence.
The bottleneck of the CXF implementation is recursiive searching the target root resouce classes.
{code:java}
String ckey = message.get(Message.BASE_PATH) + ":" + rawPath + ":" + httpMethod + ":" + requestContentType
+ ":" + acceptTypes;

        if (resourceMethodCache != null) {
            ResourceMethodCache rmCache = resourceMethodCache.get(ckey);
            if (rmCache != null) {
                ori = rmCache.getOperationResourceInfo();
                matchedValues = rmCache.getValues();
                String mediaType = rmCache.getMediaType();
                if (!ori.isSubResourceLocator() && mediaType != null) {
                    message.getExchange().put(Message.CONTENT_TYPE, mediaType);
                }

                setExchangeProperties(message, exchange, ori, matchedValues, resources.size());
                shouldFind = false;
            }
        }

{code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message