Any chance you could create a small test case for this?  I did a LOT of 
testing and benchmarking with FastInfoset for 2.2.7 so I know it works for 
some use cases.   

Dan



On Wednesday 24 March 2010 10:43:46 am fahman_dude wrote:
> Hi,
> 
> I have a webservice operation that returns primitive "string". I call this
> very same operation in three different ways: 1. without any sort of
> compression; 2. with mtom compression 3. with fastinfoset compression.
> 
> The no compression call and mtom compression call works but fastinfoset
> call fails with this exception:
> 
> 15:24:49,328 DEBUG [main] apache.cxf.phase.PhaseInterceptorChain (240)    
> - Invoking handleMessage on interceptor
> org.apache.cxf.interceptor.docliteralinintercep...@1bb3e9a
> 15:24:49,343 WARN  [main] apache.cxf.phase.PhaseInterceptorChain (365)    
> - Interceptor for
> {http://blahblah/email/service}EmailUS#{http://blahblah/email/service}sendE
> mail has thrown exception, unwinding now
> org.apache.cxf.interceptor.Fault: Unmarshalling Error: null
>       at
> org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:7
> 80) at
> org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:6
> 24) at org.apache.cxf.jaxb.io.DataReaderImpl.read(DataReaderImpl.java:128)
> at
> org.apache.cxf.interceptor.DocLiteralInInterceptor.handleMessage(DocLiteral
> InInterceptor.java:106) at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChai
> n.java:243) at
> org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:672) at
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleRespons
> eInternal(HTTPConduit.java:2254) at
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleRespons
> e(HTTPConduit.java:2134) at
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPCon
> duit.java:1988) at
> org.apache.cxf.io.CacheAndWriteOutputStream.postClose(CacheAndWriteOutputSt
> ream.java:47) at
> org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java:188) at
> org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66) at
> org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:639) at
> org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInte
> rceptor.handleMessage(MessageSenderInterceptor.java:62) at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChai
> n.java:243) at
> org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:484) at
> org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:310) at
> org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:262) at
> org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73) at
> org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:124) at
> $Proxy67.sendEmail(Unknown Source)
>       at
> blahblah.email.service.EmailUSWSImplTest.prepareAndCallSendEmailWebService(
> EmailUSWSImplTest.java:332) at
> blahblah.email.service.EmailUSWSImplTest.testSendEmailWithFastinfosetCompre
> ssion(EmailUSWSImplTest.java:304) at
> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:3
> 9) at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImp
> l.java:25) at java.lang.reflect.Method.invoke(Method.java:597)
>       at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:59)
>       at
> org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java:98)
>       at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:79)
>       at
> org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(Method
> Roadie.java:87) at
> org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77) at
> org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42) at
> org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRu
> nner.java:88) at
> org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.j
> ava:51) at
> org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:4
> 4) at
> org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
>       at
> org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
> at
> org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42)
>       at
> org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:5
> 9) at
> org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(A
> bstractDirectoryTestSuite.java:115) at
> org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(Abstract
> DirectoryTestSuite.java:102) at
> org.apache.maven.surefire.Surefire.run(Surefire.java:180)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:3
> 9) at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImp
> l.java:25) at java.lang.reflect.Method.invoke(Method.java:597)
>       at
> org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(Surefire
> Booter.java:350) at
> org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:10
> 21) Caused by: java.lang.AssertionError
>       at com.sun.xml.bind.v2.util.QNameMap.getEntry(QNameMap.java:460)
>       at com.sun.xml.bind.v2.util.QNameMap.get(QNameMap.java:158)
>       at
> com.sun.xml.bind.v2.runtime.unmarshaller.StructureLoader.childElement(Struc
> tureLoader.java:241) at
> com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext._startElement
> (UnmarshallingContext.java:478) at
> com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.startElement(
> UnmarshallingContext.java:459) at
> com.sun.xml.bind.v2.runtime.unmarshaller.FastInfosetConnector.handleStartEl
> ement(FastInfosetConnector.java:162) at
> com.sun.xml.bind.v2.runtime.unmarshaller.FastInfosetConnector.bridge(FastIn
> fosetConnector.java:105) at
> com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(Unmars
> hallerImpl.java:360) at
> com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(Unmarsh
> allerImpl.java:339) at
> org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:7
> 55) ... 48 more
> 
> If I change return type of the operation to one way (remove output message
> from the porttype def) the call to fastinfoset works just fine!!! But as
> soon as I make the operation two way, it brings this error.
> I tried:
> - changing return type to int;
> - enabling FI declaratively by adding <fastinfoset/> to bus definition in
> cxf.xml
> - enabling FI programaticaly by adding FIStaxXXInterceptor to endpoints
> - adding fresh new operation to the webservice with the return value and
> testing if it works
> none of this worked for me.
> 
> thank you and kind regards
> reinis

-- 
Daniel Kulp
[email protected]
http://dankulp.com/blog

Reply via email to