Return-Path: X-Original-To: apmail-cxf-issues-archive@www.apache.org Delivered-To: apmail-cxf-issues-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 5D47D19948 for ; Tue, 5 Apr 2016 11:45:31 +0000 (UTC) Received: (qmail 14094 invoked by uid 500); 5 Apr 2016 11:45:26 -0000 Delivered-To: apmail-cxf-issues-archive@cxf.apache.org Received: (qmail 14059 invoked by uid 500); 5 Apr 2016 11:45:26 -0000 Mailing-List: contact issues-help@cxf.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cxf.apache.org Delivered-To: mailing list issues@cxf.apache.org Received: (qmail 14030 invoked by uid 99); 5 Apr 2016 11:45:26 -0000 Received: from arcas.apache.org (HELO arcas) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 05 Apr 2016 11:45:26 +0000 Received: from arcas.apache.org (localhost [127.0.0.1]) by arcas (Postfix) with ESMTP id E84282C1F62 for ; Tue, 5 Apr 2016 11:45:25 +0000 (UTC) Date: Tue, 5 Apr 2016 11:45:25 +0000 (UTC) From: "Neal Hu (JIRA)" To: issues@cxf.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Commented] (CXF-6837) Add cache for MessageBodyReader/Writer MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/CXF-6837?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15226108#comment-15226108 ] Neal Hu commented on CXF-6837: ------------------------------ 1. handleMapper doen't check the genericType of the messagebody can be addressed in another jira, not cache relavant. 2. sure. 3.no. the isReadable/isWritable return value can be changed during caching with the same cache key. so keep one value is wrong. It has been proved in TCK case. 4.can be moved to construction time, but it is not lazy. current solution is basicly thread safe, or we change below: {code:java} private ProviderCache getProviderCache() { if (providerCache == null) { Synchromized(lock){ if(providerCache == null) providerCache = new ProviderCache(); } } return providerCache; } {code} 5. we will not occupy so much memory as the instances in the cache are all singleton(or dropped each time for per-request providers). > Add cache for MessageBodyReader/Writer > -------------------------------------- > > Key: CXF-6837 > URL: https://issues.apache.org/jira/browse/CXF-6837 > Project: CXF > Issue Type: Improvement > Components: JAX-RS > Affects Versions: 3.1.5, 3.0.8 > Environment: windows > Reporter: Neal Hu > Fix For: 3.2.0 > > Attachments: ListAProvider.java, ListBProvider.java, ProviderCache.java, ProviderFactory.patch, Resource.java, beans.xml, web.xml > > > CXF selects the msgBodyReader/writer in the reader/writer list for every request, which has big impact to the performance. Jersey also has the cache in org.glassfish.jersey.message.internal.MessageBodyFactory._getMessageBodyReader(...). I have tried add the cache for CXF in ProviderFactory and been proved that it has improved 7-8% for json requests in JMeter. Please let me know if you'd like me to add the enhancement for CXF. Thanks. > http://cxf.547215.n5.nabble.com/MessageBodyReader-Writer-cache-td5767091.html -- This message was sent by Atlassian JIRA (v6.3.4#6332)