You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cxf.apache.org by "Rex Wang (JIRA)" <ji...@apache.org> on 2013/04/16 10:33:16 UTC

[jira] [Commented] (CXF-4947) Potential problems with the JAXBContext being null

    [ https://issues.apache.org/jira/browse/CXF-4947?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13632663#comment-13632663 ] 

Rex Wang commented on CXF-4947:
-------------------------------

upload CXF-4947-2.patch, the patch is for br2.6.
The main changes are:
1. add a new construct method in CachedContextAndSchemas:
  private CachedContextAndSchemas(JAXBContext context, Set<Class<?>> classes, CachedContextAndSchemasInternal i)
and then in getCachedContextAndSchemas()
  return new CachedContextAndSchemas(context, classes, cachedContextAndSchemasInternal);
so that we can hold the strong reference of context till the method is returned.
2. rename all local variable cachedContextAndSchemas to cachedContextAndSchemasInternal in getCachedContextAndSchemas()
so that this part of code is more readable..

                
> Potential problems with the JAXBContext being null
> --------------------------------------------------
>
>                 Key: CXF-4947
>                 URL: https://issues.apache.org/jira/browse/CXF-4947
>             Project: CXF
>          Issue Type: Bug
>          Components: JAXB Databinding
>    Affects Versions: 2.7.4, 2.6.7
>            Reporter: Rex Wang
>            Assignee: Daniel Kulp
>             Fix For: 2.5.11, 2.6.8, 2.7.5
>
>         Attachments: CXF-4947-2.patch, CXF-4947.patch, r1464133_for_trunk.diff, r1464141_for_br2.6.x.diff, r1464185_for_br2.6.x.diff, r1464627_for_tr.diff, r1464632_for_br2.6.x.diff
>
>
> I post a mail to mail list to describe this. And Daniel fixed it very quickly. I still open this JIRA to record this issue, so that I can get a numbered patch merging to my runtime. Thanks.
> --
> 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. 

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira