cxf-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Daniel Kulp <dk...@apache.org>
Subject Re: CXF 2.2.5 and Fastinfoset
Date Tue, 19 Jan 2010 19:59:43 GMT

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/resourc
> >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
dkulp@apache.org
http://www.dankulp.com/blog

Mime
View raw message