cxf-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Rex Wang <rwo...@gmail.com>
Subject SoftReference as jaxb context cache?
Date Wed, 03 Apr 2013 07:48:07 GMT
hi devs,
I found some intermittent NullpointerException, and it is very hard to
reproduce but I did have met a lot of times, and it is thrown from
different places from runtime:
Stack Dump = java.lang.NullPointerException
    at
org.apache.cxf.common.jaxb.JAXBUtils.generateJaxbSchemas(JAXBUtils.java:765)
    at
org.apache.cxf.jaxb.JAXBDataBinding.generateJaxbSchemas(JAXBDataBinding.java:440)
    at
org.apache.cxf.jaxb.JAXBDataBinding.initialize(JAXBDataBinding.java:363)
    at
org.apache.cxf.service.factory.AbstractServiceFactoryBean.initializeDataBindings(AbstractServiceFactoryBean.java:86)
    at
org.apache.cxf.service.factory.ReflectionServiceFactoryBean.buildServiceFromClass(ReflectionServiceFactoryBean.java:469)
    at
org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.buildServiceFromClass(JaxWsServiceFactoryBean.java:690)
    at
org.apache.cxf.service.factory.ReflectionServiceFactoryBean.initializeServiceModel(ReflectionServiceFactoryBean.java:531)
    at
org.apache.cxf.service.factory.ReflectionServiceFactoryBean.create(ReflectionServiceFactoryBean.java:247)

After checking the codes, they are all about the jaxbcontext is null.
>From the JAXBContextCache.CachedContextAndSchemas, I notice this line:
private WeakReference<JAXBContext> context;

IMHO, WeakReference is not a good choice to do cache, it could be gc in any
time. For example,
JAXBContextCache.getCachedContextAndSchemas(..)
<gc>
ctx = cachedContextAndSchemas.getContext()    <-- then the ctx will be null
here

So I guess this is the root cause of the intermittent issue. Any insights
or stories about the current design? Can we change it to SoftReference?

-- 
Lei Wang (Rex)
rwonly AT apache.org

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message