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)