I've seen this exception before and I've been able to reproduce it this
morning in rt/frontend/jaxrs/.../JAXBElementProviderTest.

Look at AbstractJaxbProvider.InTransformReader#getProperty. It overrides it
with the only purpose : return false for "org.codehaus.stax2.internNames"
and "org.codehaus.stax2.internNsUris". If you disable this code then you'll
see a couple of JAXBElementProviderTest tests failing.

As far as I remember, JAXB queries for the values of these properties and
when say Woodstox is used without custom readers/writers being introduced,
it probably returns 'true' and then does some sort of interning. So in my
case I can only make sure the custom reader returns false. I think that not
all custom XMLStreamReaders should have to deal with these properties - it
probably depends on how do they go in customizing the reading process.

Hope it helps a bit
Sergey


On Thu, Nov 18, 2010 at 11:10 PM, Kessel, Christopher <
[email protected]> wrote:

> I appreciate the pointers. I'm baffled too. We use the SOAP interface
> heavily (our servers use it to talk internally) so I know it works, or can
> work anyway. I can even get it to work just fine with a direct command line
> "curl".
>
> The fellow on the other end is much like me, but using C#. The wsdl creates
> code and it's all black box stuff on the actual underlying communication :)
>
> Thanks,
> Chris
>
> -----Original Message-----
> From: Daniel Kulp [mailto:[email protected]]
> Sent: Thursday, November 18, 2010 1:29 PM
> To: [email protected]
> Cc: Kessel, Christopher
> Subject: Re: "Namespace URIs and local names to the unmarshaller needs to
> be interned"
>
> On Thursday 18 November 2010 4:18:11 pm Kessel, Christopher wrote:
> > We're in production with it and headed in a 2-month change moratorium for
> > the holiday season, so I can't swap anything out for probably 3 months
> > unless failure to do so will activate a tactical nuke somewhere. Even
> > then, there'd be a risk analysis study.
> >
> > Any suggestions on what to look for in their input that'd be causing it?
> > It's a customer writing their integration with our SOAP server, so even
> > though I can't change anything right now, they might be able to change
> > something on their end.
>
> Honestly, I have NO idea.   IMO, this is something that would pretty much
> always occur (aka: for all customers) or for none of them.   I really don't
> know what would trigger this for just SOME messages and not others.  :-(
>
> The only thing I can think of would be to capture the raw soap messages and
> try and compare them with messages that do work.    I don't THINK an extra
> child element that isn't in the schema would cause this, but it might.
>
> You could TRY turning on schema validation as well.  That may change things
> or
> maybe give an error message if that is what the problem is.
>
> Dan
>
>
> >
> > Thanks,
> > Chris
> >
> > -----Original Message-----
> > From: Daniel Kulp [mailto:[email protected]]
> > Sent: Thursday, November 18, 2010 12:54 PM
> > To: [email protected]
> > Cc: Kessel, Christopher
> > Subject: Re: "Namespace URIs and local names to the unmarshaller needs to
> > be interned"
> >
> > On Thursday 18 November 2010 2:31:05 pm Kessel, Christopher wrote:
> > > Any idea what this error means? A customer is trying to access our SOAP
> > > interface, we're using CXF (2.2.6 I think), and I can see the exception
> > > in the log. I can't duplicate it.
> >
> > I saw some similar issues like this when doing some work on the
> FastInfoset
> > stuff.   My recommendations:
> >
> > 1) Try with CXF 2.2.10 or 2.3.0.   We've done a bit of work to make sure
> > the original XMLStreamReaders are passed into JAXB and JAXB usually can
> > then reconfigure them a bit better to make sure things are interned
> > correctly and such.
> >
> > 2) Make sure Woodstox is picked up and not the parser built into the JDK.
> >
> > Dan
> >
> > > I suspect it has nothing to do with CXF itself, but I really have no
> idea
> > > what it means.
> > >
> > > Thanks,
> > > Chris
> > >
> > > DefaultValidationEventHandler: [ERROR]: Namespace URIs and local names
> to
> > > the unmarshaller needs to be interned.
> org.apache.cxf.interceptor.Fault:
> > > Unmarshalling Error: Namespace URIs and local names to the unmarshaller
> > > needs to be interned. at
> > >
> org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java
> > > : 764) at
> > >
> org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java
> > > : 623) at
> > > org.apache.cxf.jaxb.io.DataReaderImpl.read(DataReaderImpl.java:128) at
> > >
> org.apache.cxf.interceptor.DocLiteralInInterceptor.getPara(DocLiteralInIn
> > > t erceptor.java:248) at
> > >
> org.apache.cxf.interceptor.DocLiteralInInterceptor.handleMessage(DocLiter
> > > a lInInterceptor.java:124) at
> > >
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorCh
> > > a in.java:243) at
> > >
> org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiatio
> > > n Observer.java:109) at
> > >
> org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestina
> > > t ion.java:98) at
> > >
> org.apache.cxf.transport.servlet.ServletController.invokeDestination(Serv
> > > l etController.java:406) at
> > >
> org.apache.cxf.transport.servlet.ServletController.invoke(ServletControll
> > > e r.java:178) at
> > >
> org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFSer
> > > v let.java:142) at
> > >
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(Abstra
> > > c tHTTPServlet.java:179) at
> > >
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPS
> > > e rvlet.java:103) at
> > > javax.servlet.http.HttpServlet.service(HttpServlet.java:637) at
> > >
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTP
> > > S ervlet.java:159) at
> > >
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applicat
> > > i onFilterChain.java:290) at
> > >
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilte
> > > r Chain.java:206) at
> > >
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve
> > > . java:233) at
> > >
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve
> > > . java:191) at
> > >
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:
> > > 1 28) at
> > >
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:
> > > 1 02) at
> > >
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.j
> > > a va:109) at
> > >
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:29
> > > 3 ) at
> > >
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849
> > > ) at
> > >
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(H
> > > t tp11Protocol.java:583) at
> > > org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
> > > at java.lang.Thread.run(Thread.java:619)
> > > Caused by: javax.xml.bind.UnmarshalException
> > >
> > >  - with linked exception:
> > > [javax.xml.bind.UnmarshalException: Namespace URIs and local names to
> the
> > > unmarshaller needs to be interned.] at
> > >
> com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.handleStreamExc
> > > e ption(UnmarshallerImpl.java:425) at
> > >
> com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(Unma
> > > r shallerImpl.java:362) at
> > >
> com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(Unmar
> > > s hallerImpl.java:339) at
> > >
> org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java
> > > : 749) ... 26 more
> > > Caused by: javax.xml.bind.UnmarshalException: Namespace URIs and local
> > > names to the unmarshaller needs to be interned. at
> > >
> com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.handleEvent
> > > ( UnmarshallingContext.java:642) at
> > >
> com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportError(Loader.java:2
> > > 5 4) at
> > >
> com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportError(Loader.java:2
> > > 4 9) at
> > >
> com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportUnexpectedChildElem
> > > e nt(Loader.java:114) at
> > >
> com.sun.xml.bind.v2.runtime.unmarshaller.Loader.childElement(Loader.java:
> > > 1 01) at
> > >
> com.sun.xml.bind.v2.runtime.unmarshaller.StructureLoader.childElement(Str
> > > u ctureLoader.java:245) at
> > >
> com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext._startEleme
> > > n t(UnmarshallingContext.java:478) at
> > >
> com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.startElemen
> > > t (UnmarshallingContext.java:459) at
> > >
> com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.handleStartE
> > > l ement(StAXStreamConnector.java:242) at
> > >
> com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.bridge(StAXS
> > > t reamConnector.java:176) at
> > >
> com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(Unma
> > > r shallerImpl.java:360) ... 28 more
> > > Caused by: javax.xml.bind.UnmarshalException: Namespace URIs and local
> > > names to the unmarshaller needs to be interned. ... 39 more
>
> --
> Daniel Kulp
> [email protected]
> http://dankulp.com/blog
>

Reply via email to