Hi Sergey, Dan,
I got it working successfully using 2.2.7-SNAPSHOT! I appreciate the continuing support! Now, I'm going to build the client to parse this data. best regards, Allan http://old.nabble.com/file/p27279908/fastinfoset2.png fastinfoset2.png Sergey Beryozkin-2 wrote: > > Actually, it is not finished yet, should be ready shortly > > ----- Original Message ----- > From: "Sergey Beryozkin" <[email protected]> > To: <[email protected]> > Sent: Friday, January 22, 2010 4:42 PM > Subject: Re: CXF 2.2.5 and Fastinfoset > > >> Hi Allan >> >> I can see the trunk build is done [1] >> >> I did not know 2.2.x had fastinfoset interceptors. Will merge there >> now... >> >> cheers, Sergey >> >> [1] >> http://hudson.zones.apache.org/hudson/view/CXF/job/CXF-Trunk-JDK15/lastBuild/changes >> >> >> >>> >>> >>> Hi Sergey, >>> >>> Thank you! What version did you check in the fix? 2.2.5 or 2.3? Am I >>> going >>> to download the snapshot version? >>> >>> Please advice. >>> >>> Best regards, >>> Allan >>> >>> >>> Sergey Beryozkin-2 wrote: >>>> >>>> >>>> Hi Allan >>>> >>>> Sorry for a delay, I just fixed it. JAXBElementProvider was not >>>> checking >>>> for stax in/out factories, it was only checking for already >>>> created readers/writers. There also was a minor issue to do with >>>> reading >>>> the fastinfoset on the client side >>>> >>>> One thing I observed is that on the client side you do not need to >>>> @Consume fastinfoset explicitly given that a fastinfoset in >>>> interceptor replaces it with text/xml. >>>> >>>> thanks, Sergey >>>> >>>>> >>>>> >>>>> >>>>> Hi Dan, Sergey, >>>>> >>>>> I added the Interceptors, but it's still not working. Here's my >>>>> implementation: >>>>> >>>>> first I added the interceptors: >>>>> <bean id="fastInfosetOutInterceptor" >>>>> class="org.apache.cxf.interceptor.FIStaxOutInterceptor" /> >>>>> <bean id="fastInfosetInInterceptor" >>>>> class="org.apache.cxf.interceptor.FIStaxInInterceptor" /> >>>>> >>>>> I applied it in my endpoint config: >>>>> >>>>> <jaxrs:server id="sampleService" address="/"> >>>>> <jaxrs:serviceBeans> >>>>> <ref bean="sampleServiceBean" /> >>>>> </jaxrs:serviceBeans> >>>>> <jaxrs:providers> >>>>> <ref bean="jaxbProvider" /> >>>>> </jaxrs:providers> >>>>> <jaxrs:outInterceptors> >>>>> <ref bean="fastInfosetOutInterceptor" /> >>>>> </jaxrs:outInterceptors> >>>>> <jaxrs:inInterceptors> >>>>> <ref bean="fastInfosetInInterceptor" /> >>>>> </jaxrs:inInterceptors> >>>>> </jaxrs:server> >>>>> >>>>> >>>>> At first, threw an exception because "Content-Type" is not define. So >>>>> I >>>>> added it in the request header. Then It went through >>>>> FIStaxOutInterceptor::handleMessage() fine, but the returned xml is >>>>> still >>>>> not fastinfoset encoded. >>>>> >>>>> Did I miss something? >>>>> >>>>> >>>>> Thanks, >>>>> Allan >>>>> >>>>> >>>>> >>>>> dkulp wrote: >>>>>> >>>>>> On Tue January 19 2010 3:34:53 pm Sergey Beryozkin wrote: >>>>>>> Yes, that is probably it. Allan, can you try it ? I thought naively >>>>>>> @FastInfoset was handled at the runtime core level, but I will try >>>>>>> to >>>>>>> update the JAXRS runtime to check for @FastInfoset and other newly >>>>>>> introduced annotations in time for 2.3 >>>>>> >>>>>> The new annotations are handled by new listeners that listen for >>>>>> various >>>>>> events. I have the ReflectionServiceFactoryBean producing those >>>>>> events. >>>>>> I >>>>>> haven't gone through the JAX-RS equivalent stuff yet to get those >>>>>> working. >>>>>> It >>>>>> shouldn't be hard, just needs to be done. >>>>>> >>>>>> Dan >>>>>> >>>>>> >>>>>>> >>>>>>> Cheers, Sergey >>>>>>> >>>>>>> -----Original Message----- >>>>>>> From: Daniel Kulp [mailto:[email protected]] >>>>>>> Sent: 19 January 2010 20:00 >>>>>>> To: [email protected] >>>>>>> Cc: AllanSLim >>>>>>> Subject: Re: CXF 2.2.5 and Fastinfoset >>>>>>> >>>>>>> >>>>>>> Try configuring in the Fastinfoset interceptors directly. I'm not >>>>>>> sure >>>>>>> if >>>>>>> the JAX-RS stuff will pickup the @FastInfoset annotation on 2.3 yet. >>>>>>> >>>>>>> Dan >>>>>>> >>>>>>> On Tue January 19 2010 1:19:45 pm AllanSLim wrote: >>>>>>> > Hi Sergey, Dan, >>>>>>> > >>>>>>> > I have tried it and it accepted it! However, the xml output >>>>>>> doesn't >>>>>>> >>>>>>> look >>>>>>> >>>>>>> > fastinfoset encoded. The xml output that I have is not big. >>>>>>> Probably >>>>>>> >>>>>>> just >>>>>>> >>>>>>> > 10 lines. >>>>>>> > >>>>>>> > To recap, here's what I have done (For other readers ): >>>>>>> > >>>>>>> > in my applicationContext.xml I added: >>>>>>> > >>>>>>> > <util:list id="customTypes"> >>>>>>> > <value>application/xml</value> >>>>>>> > <value>application/fastinfoset</value> >>>>>>> > </util:list> >>>>>>> > >>>>>>> > <bean id="jaxbProvider" >>>>>>> > class="org.apache.cxf.jaxrs.provider.JAXBElementProvider"> >>>>>>> > <property name="produceMediaTypes" ref="customTypes" /> >>>>>>> > <property name="consumeMediaTypes" ref="customTypes" /> >>>>>>> > </bean> >>>>>>> > >>>>>>> > and added a provider in my service: >>>>>>> > >>>>>>> > <!-- JAX-RS endpoint configuration --> >>>>>>> > <jaxrs:server id="sampleService" address="/"> >>>>>>> > <jaxrs:serviceBeans> >>>>>>> > <ref bean="sampleServiceBean" /> >>>>>>> > </jaxrs:serviceBeans> >>>>>>> > <jaxrs:providers> >>>>>>> > <ref bean="jaxbProvider" /> >>>>>>> > </jaxrs:providers> >>>>>>> > </jaxrs:server> >>>>>>> > >>>>>>> > >>>>>>> > NOTE: The name space for util:list is needed. ( >>>>>>> > xmlns:util="http://www.springframework.org/schema/util" ) >>>>>>> > >>>>>>> > Since I am using 2.3, I added the annotation in my service impl. >>>>>>> > >>>>>>> > @FastInfoset >>>>>>> > public class SampleServiceImpl implements SampleService { >>>>>>> > >>>>>>> > >>>>>>> > @Path("/getSample") >>>>>>> > @Produces({"application/xml","application/fastinfoset"}) >>>>>>> > public SampleResponse getSampleWithParams(@QueryParam("id") >>>>>>> Long >>>>>>> >>>>>>> id) >>>>>>> >>>>>>> > throws SampleServiceException, >>>>>>> SampleServiceIllegalArgumentException >>>>>>> { >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > Thank you guys for the help! >>>>>>> > >>>>>>> > >>>>>>> > regards, >>>>>>> > Allan >>>>>>> > >>>>>>> > Sergey Beryozkin wrote: >>>>>>> > > Hi >>>>>>> > > >>>>>>> > > Sorry for a delay. >>>>>>> > > CXF JAXRS JaxbElementProvider is already checking for a custom >>>>>>> > > XMLStreamReader/XMLStreamWriter on a message, and if it is >>>>>>> available >>>>>>> >>>>>>> then >>>>>>> >>>>>>> > > will read from/write to it. >>>>>>> > > The current problem is that a JAXB provider is not recognizing >>>>>>> > > "application/fastinfoset", so you just need to explicitly >>>>>>> configure >>>>>>> > > JaxbElementProvider to accept >>>>>>> > > >>>>>>> > > "application/xml" and "application/fastinfoset", please see >>>>>>> >>>>>>> http://svn.apache.org/repos/asf/cxf/trunk/systests/jaxrs/src/test/resour >>>>>>> c >>>>>>> >>>>>>> > >es/jaxrs/WEB-INF/beans.xml >>>>>>> > > >>>>>>> > > ex, do something like >>>>>>> > > >>>>>>> > > <util:list id="customTypes"> >>>>>>> > > <value>application/xml</value> >>>>>>> > > <value>application/fastinfoset</value> >>>>>>> > > </util:list> >>>>>>> > > >>>>>>> > > and then >>>>>>> > > >>>>>>> > > <bean id="jaxbProvider" >>>>>>> > > class="org.apache.cxf.jaxrs.provider.JAXBElementProvider"> >>>>>>> > > <property name="produceMediaTypes" ref="customTypes"/> >>>>>>> > > <property name="consumeMediaTypes" ref="customTypes"/> >>>>>>> > > </bean> >>>>>>> > > >>>>>>> > > Can you try it please ? I hope this will work for you >>>>>>> > > Sergey >>>>>>> > > >>>>>>> > > AllanSLim wrote: >>>>>>> > >> Hi Dan, >>>>>>> > >> >>>>>>> > >> Thanks a lot! Any feedback from Sergey is also appreciated. >>>>>>> > >> >>>>>>> > >> >>>>>>> > >> We also have SOAP endpoints, I will experiment on that as well. >>>>>>> > >> >>>>>>> > >> regards, >>>>>>> > >> Allan >>>>>>> > >> >>>>>>> > >> dkulp wrote: >>>>>>> > >>> May need to wait till Sergey is back from his holidays for >>>>>>> this. >>>>>>> > >>> >>>>>>> > >>> I don't think the FastInfosetFeature thing will work for >>>>>>> JAX-RS >>>>>>> as >>>>>>> >>>>>>> that >>>>>>> >>>>>>> > >>> really >>>>>>> > >>> interacts with the StaxOutInterceptors that are used for the >>>>>>> >>>>>>> normal >>>>>>> >>>>>>> > >>> webservice >>>>>>> > >>> things. What may be needed is a FI Provider thing for JAXRS. >>>>>>> >>>>>>> Not >>>>>>> >>>>>>> > >>> really >>>>>>> > >>> sure though. Or maybe have the existing providers that use >>>>>>> Stax >>>>>>> > >>> double check >>>>>>> > >>> the message for an XMLStreamReader or similar. If I get a >>>>>>> >>>>>>> chance a >>>>>>> >>>>>>> > >>> bit >>>>>>> > >>> later, I'll try and take a look, but this is defintely closer >>>>>>> to >>>>>>> > >>> Sergey's >>>>>>> > >>> area. >>>>>>> > >>> >>>>>>> > >>> Dan >>>>>>> > >>> >>>>>>> > >>> On Thu January 7 2010 11:32:34 am AllanSLim wrote: >>>>>>> > >>>> Hi Guys, >>>>>>> > >>>> >>>>>>> > >>>> We're trying to implementing the fastInfoset feature of CXF >>>>>>> >>>>>>> (2.2.5) >>>>>>> >>>>>>> > >>>> in our >>>>>>> > >>>> REST service, but it's returning a 500 internal server error >>>>>>> ( >>>>>>> No >>>>>>> > >>>> message >>>>>>> > >>>> body writer has been found for response class Person ). >>>>>>> > >>>> >>>>>>> > >>>> wget: >>>>>>> > >>>> >>>>>>> > >>>> wget -S --header="Accept: application/fastinfoset" >>>>>>> > >>>> http://localhost:8080/services/samples/getSample?id=9 >>>>>>> > >>>> >>>>>>> > >>>> No message body writer has been found for response class >>>>>>> Person >>>>>>> > >>>> >>>>>>> > >>>> >>>>>>> > >>>> Our rest service is: >>>>>>> > >>>> >>>>>>> > >>>> @Path("/samples") >>>>>>> > >>>> @Features(features = { >>>>>>> >>>>>>> "org.apache.cxf.feature.FastInfosetFeature" }) >>>>>>> >>>>>>> > >>>> @Produces({"application/xml","application/fastinfoset", >>>>>>> >>>>>>> "text/plain"}) >>>>>>> >>>>>>> > >>>> public class SampleServiceImpl implements SampleService { >>>>>>> > >>>> >>>>>>> > >>>> @GET >>>>>>> > >>>> @Path("/getPerson") >>>>>>> > >>>> public Response getPerson() { >>>>>>> > >>>> Person person = new Person(); >>>>>>> > >>>> person.setAge("99"); >>>>>>> > >>>> person.setName("Homer Simpson"); >>>>>>> > >>>> // trying the Response.ok() >>>>>>> > >>>> return Response.ok(person).build(); >>>>>>> > >>>> // return person; >>>>>>> > >>>> } >>>>>>> > >>>> >>>>>>> > >>>> >>>>>>> > >>>> >>>>>>> > >>>> Our class person is properly annotated with: >>>>>>> > >>>> >>>>>>> > >>>> @XmlRootElement(name = "Person") >>>>>>> > >>>> public class Person { .. } >>>>>>> > >>>> >>>>>>> > >>>> >>>>>>> > >>>> >>>>>>> > >>>> Our project is maven base. >>>>>>> > >>>> >>>>>>> > >>>> Any help will be greatly appreciated! >>>>>>> > >>>> >>>>>>> > >>>> Thank you very much! >>>>>>> > >>>> >>>>>>> > >>>> regards, >>>>>>> > >>>> Allan >>>>>>> >>>>>> >>>>>> -- >>>>>> Daniel Kulp >>>>>> [email protected] >>>>>> http://www.dankulp.com/blog >>>>>> >>>>>> >>>>> >>>>> -- >>>>> View this message in context: >>>>> http://old.nabble.com/CXF-2.2.5-and-Fastinfoset-tp27062753p27247240.html >>>>> Sent from the cxf-user mailing list archive at Nabble.com. >>>>> >>>> >>>> >>>> >>> >>> -- >>> View this message in context: >>> http://old.nabble.com/CXF-2.2.5-and-Fastinfoset-tp27062753p27276089.html >>> Sent from the cxf-user mailing list archive at Nabble.com. >>> > > -- View this message in context: http://old.nabble.com/CXF-2.2.5-and-Fastinfoset-tp27062753p27279908.html Sent from the cxf-user mailing list archive at Nabble.com.
