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
