AbstractJAXBProvider.getJAXBContext(..)方法性能问题

时间:2015-05-05 15:25:30

标签: java performance jaxb

在我的应用程序中,JAXB用于消息解析,它是基于XML请求/响应的RESTFUL应用程序。

我正在观察JAXB的性能问题,这个问题不一致,很难重现。

然而,我能够在性能测试期间在我们的测试环境中重现它。我在Dynatrace中观察到,来自cxf-rt-frontend-jaxrs-2.7.10-sources.jar的AbstractJAXBProvider.java的JAXB方法被阻塞了1到2秒。它发生在20个同时发出的请求中,所有20个线程在此方法上被阻止1到2秒。

@SuppressWarnings("unchecked")
public JAXBContext getJAXBContext(Class<?> type, Type genericType) throws JAXBException {
    if (mc != null) {
        ContextResolver<JAXBContext> resolver = 
            mc.getResolver(ContextResolver.class, JAXBContext.class);
        if (resolver != null) {
            JAXBContext customContext = resolver.getContext(type);
            if (customContext != null) {
                return customContext;
            }
        }
    }

    synchronized (classContexts) {
        JAXBContext context = classContexts.get(type);
        if (context != null) {
            return context;
        }
    }

    JAXBContext context = getPackageContext(type, genericType);

    return context != null ? context : getClassContext(type, genericType);
}

是否有办法避免这种瓶颈,因此在高度并发的请求下,性能不会受到影响。

非常感谢任何帮助。

0 个答案:

没有答案