Hi, John,
It's not easy to say what's wrong without seeing your code. Are you
working with JAXB in multithreaded app? May be it'll be good idea for
you to open bug on:
http://java.net/jira/secure/Dashboard.jspa and put
there some simple testcase to reproduce this problem.
Thanks.
--
Best regards,
Iaroslav
On 03/12/12 22:58, John.E.Gregg_at_wellsfargo.com wrote:
> Hello all,
>
> While running a load test against a system using JAXB 2.2.4, we found a bug related to unsynchronized HashMap access. I'm copying part of the stack trace below. I don't know much about the internals of JAXB, but I see a lot of methods with generate/initialize/create in their names, so I can see why the caller wouldn't see a need to synchronize the JaxWsProxyFactoryBean.create() call. The Map that gets corrupted comes from JAXBContextImpl.typeInfoSetCache. I also looked at 2.2.6 but didn't see a fix.
>
> In the thread dump there were over 40 of these:
>
> "http--0.0.0.0-8180-35" daemon prio=6 tid=0x0000000010b98800 nid=0x1b44 runnable [0x000000001883c000]
> java.lang.Thread.State: RUNNABLE
> at java.util.HashMap.get(HashMap.java:320)
> at com.sun.xml.bind.v2.model.impl.TypeInfoSetImpl.getXmlNs(TypeInfoSetImpl.java:341)
> at com.sun.xml.bind.v2.schemagen.XmlSchemaGenerator$Namespace.writeTo(XmlSchemaGenerator.java:613)
> at com.sun.xml.bind.v2.schemagen.XmlSchemaGenerator$Namespace.access$700(XmlSchemaGenerator.java:499)
> at com.sun.xml.bind.v2.schemagen.XmlSchemaGenerator.write(XmlSchemaGenerator.java:481)
> at com.sun.xml.bind.v2.runtime.JAXBContextImpl.generateSchema(JAXBContextImpl.java:822)
> at org.apache.cxf.jaxb.JAXBUtils.generateJaxbSchemas(JAXBUtils.java:771)
> at org.apache.cxf.jaxb.JAXBDataBinding.generateJaxbSchemas(JAXBDataBinding.java:396)
> at org.apache.cxf.jaxb.JAXBDataBinding.initialize(JAXBDataBinding.java:323)
> - locked< 0x00000007a7908180> (a org.apache.cxf.jaxb.JAXBDataBinding)
> at org.apache.cxf.service.factory.AbstractServiceFactoryBean.initializeDataBindings(AbstractServiceFactoryBean.java:86)
> at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.buildServiceFromClass(ReflectionServiceFactoryBean.java:445)
> at org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.buildServiceFromClass(JaxWsServiceFactoryBean.java:682)
> at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.initializeServiceModel(ReflectionServiceFactoryBean.java:508)
> at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.create(ReflectionServiceFactoryBean.java:242)
> - locked< 0x00000007a7908280> (a org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean)
> at org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.create(JaxWsServiceFactoryBean.java:202)
> at org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:101)
> at org.apache.cxf.frontend.ClientFactoryBean.create(ClientFactoryBean.java:90)
> at org.apache.cxf.frontend.ClientProxyFactoryBean.create(ClientProxyFactoryBean.java:155)
> - locked< 0x00000007a7908378> (a org.apache.cxf.jaxws.JaxWsProxyFactoryBean)
> at org.apache.cxf.jaxws.JaxWsProxyFactoryBean.create(JaxWsProxyFactoryBean.java:153)
> - locked< 0x00000007a7908378> (a org.apache.cxf.jaxws.JaxWsProxyFactoryBean)
> at org.apache.cxf.jaxws.JaxWsProxyFactoryBean$create.call(Unknown Source)
>
> Thanks
>
> John
>
>