We are now using 2.1 and I am still getting the same error, although the line
numbers have changed. I haven't done any debugging of it yet, just wanted
to see if you had any ideas first?
Here is the updated stack trace:
May 19, 2008 11:14:07 PM org.apache.cxf.phase.PhaseInterceptorChain
doIntercept
INFO: Interceptor has thrown exception, unwinding now
java.lang.NullPointerException
at
org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:642)
at
org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:555)
at org.apache.cxf.jaxb.io.DataReaderImpl.read(DataReaderImpl.java:64)
at
org.apache.cxf.binding.soap.interceptor.SoapHeaderInterceptor.handleMessage(SoapHeaderInterceptor.java:101)
at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221)
at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:429)
at
org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1988)
at
org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1824)
at
org.apache.cxf.io.CacheAndWriteOutputStream.postClose(CacheAndWriteOutputStream.java:47)
at
org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java:159)
at
org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66)
at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:583)
at
org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:276)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:222)
at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
at
org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:177)
Let me know if I can provide any additional information.
JSP wrote:
>
> I'll try 2.0.6 and let you know.
>
>
> dkulp wrote:
>>
>>
>> Can you try with 2.0.6 or 2.1? I added checks for
>> MessagePartInfo.getTypeClass() == null in several areas for
>> 2.1/2.0.6. That may have taken care of this.
>>
>> Dan
>>
>>
>>
>> On May 14, 2008, at 3:32 PM, JSP wrote:
>>
>>>
>>> I am trying to consume one of the strikeiron web services which take
>>> an input
>>> soap header and return an output soap header. When I execute a
>>> request that
>>> has an input soap header and an output soap header I get a null
>>> pointer
>>> exception. The request is sent successfully and the response is
>>> recieved
>>> but it cannot be unmarshalled. The null pointer exception is
>>> misleading
>>> because it occurs when handling another exception. This is the null
>>> pointer
>>> exception:
>>> Caused by: java.lang.NullPointerException
>>> at
>>> org
>>> .apache
>>> .cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:592)
>>> at
>>> org
>>> .apache
>>> .cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:498)
>>> at org.apache.cxf.jaxb.io.DataReaderImpl.read(DataReaderImpl.java:40)
>>> at
>>> org
>>> .apache
>>> .cxf
>>> .binding
>>> .soap
>>> .interceptor
>>> .SoapHeaderInterceptor.handleMessage(SoapHeaderInterceptor.java:101)
>>>
>>> This is the actual exception (unfortunately no stack trace):
>>> javax.xml.bind.UnmarshalException: unexpected element
>>> (uri:"http://ws.strikeiron.com", local:"SubscriptionInfo"). Expected
>>> elements are
>>> <{http://www.strikeiron.com}GetAllStatuses>,<{http://www.strikeiron.com
>>> }GetAllStatusesResponse>,<{http://
>>> www.strikeiron.com}GetAllTeamNicknames>,<{http://
>>> www.strikeiron.com}GetAllTeamNicknamesResponse>,<{http://www.strikeiron.com
>>> }GetRemainingHits>,<{http://
>>> www.strikeiron.com}GetRemainingHitsResponse>,<{http://www.strikeiron.com
>>> }GetServiceInfo>,<{http://
>>> www.strikeiron.com}GetServiceInfoResponse>,<{http://
>>> www.strikeiron.com}GetTeamInfoByCity>,<{http://
>>> www.strikeiron.com}GetTeamInfoByCityResponse>,<{http://www.strikeiron.com
>>> }GetTeamInfoByNickname>,<{http://
>>> www.strikeiron.com}GetTeamInfoByNicknameResponse>
>>>
>>> I have traced through the code and it looks like cxf is trying to
>>> unmarshal
>>> a Node without a class.
>>> Snippet of code from JAXBEncoderDecoder (unmarshalWithClass is false):
>>> if (source instanceof Node) {
>>> obj = unmarshalWithClass ? u.unmarshal((Node)source,
>>> clazz)
>>> : u.unmarshal((Node)source);
>>> } else if (source instanceof XMLStreamReader) {
>>>
>>>
>>> And that is because the MessagePartInfo.getTypeClass() method
>>> returns null.
>>> I cannot find a place where the type class is set for the
>>> MessagePartInfo
>>> for the output soap header.
>>>
>>> I have included a snippet of my interface if that helps - I'm
>>> thinking I
>>> must have something annotated incorrectly.
>>> @ResponseWrapper(className =
>>> "data
>>> .footballws
>>> .sdpnflteamssoap.com.strikeiron.www.GetAllTeamNicknamesResponse",
>>> targetNamespace = "http://www.strikeiron.com", localName =
>>> "GetAllTeamNicknamesResponse")
>>> @RequestWrapper(className =
>>> "data
>>> .footballws.sdpnflteamssoap.com.strikeiron.www.GetAllTeamNicknames",
>>> targetNamespace = "http://www.strikeiron.com", localName =
>>> "GetAllTeamNicknames")
>>> @WebMethod(action = "http://www.strikeiron.com/GetAllTeamNicknames",
>>> operationName = "GetAllTeamNicknames")
>>> public void _GetAllTeamNicknames(@WebParam(partName =
>>> "LicenseInfoPart",
>>> header = true, mode = WebParam.Mode.IN, targetNamespace =
>>> "http://www.strikeiron.com", name = "LicenseInfo")
>>> LicenseInfo LicenseInfo, @WebParam(partName =
>>> "GetAllTeamNicknamesResultPart", mode = WebParam.Mode.OUT,
>>> targetNamespace =
>>> "http://www.strikeiron.com", name = "GetAllTeamNicknamesResult")
>>> Holder<NFLTeamOutput> GetAllTeamNicknamesResult, @WebParam(partName =
>>> "SubscriptionInfoPart", header = true, mode = WebParam.Mode.OUT,
>>> targetNamespace = "http://www.strikeiron.com", name =
>>> "SubscriptionInfo")
>>> Holder<SubscriptionInfo> SubscriptionInfo);
>>>
>>> Does anybody have an idea what I might be doing wrong?
>>>
>>> BTW - I am using 2.0.5.
>>> --
>>> View this message in context:
>>> http://www.nabble.com/NullPointerException-decoding-response-with-SOAP-header-tp17239110p17239110.html
>>> Sent from the cxf-user mailing list archive at Nabble.com.
>>>
>>
>> ---
>> Daniel Kulp
>> [EMAIL PROTECTED]
>> http://www.dankulp.com/blog
>>
>>
>>
>>
>>
>>
>
>
--
View this message in context:
http://www.nabble.com/NullPointerException-decoding-response-with-SOAP-header-tp17239110p17332466.html
Sent from the cxf-user mailing list archive at Nabble.com.