cxf-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "KARR, DAVID (ATTCINW)" <dk0...@att.com>
Subject RE: How to use CXF and JSON
Date Wed, 02 Dec 2009 18:53:46 GMT
> -----Original Message-----
> From: cgswtsu78 [mailto:cgray@proofpoint.com]
> Sent: Wednesday, December 02, 2009 10:17 AM
> To: users@cxf.apache.org
> Subject: Re: How to use CXF and JSON
> 
> 
> That did work, but it required me to save the json string as a file.
> When
> opening it in notepad it has the correct object representation.  How
> can I
> display the json string in the browser? Do I have to setup something
> prior
> to making the request to the service method?  Currently, I'm just
> executing
> a GET request by pasting in a url in IE.

Then don't do that. :)

Use SoapUI, or some other tool that knows JAX-RS.  It can even read the
WADL specification and generate the tests for you.

> Sergey Beryozkin-2 wrote:
> >
> > Hi
> >
> > You probably just don't need to do it all, just do
> >
> > @Produces(application/xml, application/json)
> > @GET
> > public SomeConcreteObjectType get(...) {
> >     return topSpamSenderService.getTopSpamSender(null);
> > }
> >
> > hope it helps
> >
> > Sergey
> >
> >>
> >> Hi Sergey,
> >>
> >> I don't quite understand the proper implementation for using CXF
and
> >> JSON.
> >> I have the xml implementation working, see below.  Can you guide me
> on
> >> doing
> >> the same basic function but returning JSON?  I know I need to
change
> the
> >> @Produces to "application/json", but what setup do I need to do in
> order
> >> to
> >> return the json string representing the Object "o" to the browser
or
> >> consumer of the service?  Thanks for the help!
> >>
> >>
> >> xml version:
> >>
> >> import javax.ws.rs.GET;
> >> import javax.ws.rs.POST;
> >> import javax.ws.rs.Path;
> >> import javax.ws.rs.Produces;
> >> import javax.ws.rs.core.Response;
> >> public class XMLExample{
> >>        @GET
> >> @Path("/getTopSpamSender")
> >> @Produces("application/xml")
> >> public Response retrieveTopSpamSenderData() throws Exception {
> >>
> >> Response httpresp;
> >> String httpbody;
> >> httpresp=null;
> >>
> >> Object o = topSpamSenderService.getTopSpamSender(null);
> >>
> >> if (o != null)
> >> {
> >>
> >> httpbody = JaxbUtils.ObjToXmlStr(o, false);
> >> httpresp = setupResponse(Response.ok(httpbody)).build();
> >> }
> >> else
> >> httpresp = setupResponse(Response.noContent()).build();
> >>
> >>
> >>
> >> return httpresp;
> >>
> >> }
> >> }
> >>
> >> public static String ObjToXmlStr(Object obj, boolean
> includeXmlVerHdr)
> >> {
> >> try
> >> {
> >> StringWriter sw = new StringWriter();
> >> JAXBContext jaxbctx = JAXBContext.newInstance(obj.getClass());
> >> Marshaller marshaller = jaxbctx.createMarshaller();
> >> marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
> >> marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
> >>
> >> marshaller.marshal(obj, sw);
> >>
> >> if (!includeXmlVerHdr)
> >> {
> >> String str = sw.toString();
> >> int beginIndex = str.toString().indexOf(">");
> >>
> >> return str.substring(beginIndex + 2);
> >> }
> >>
> >> return sw.toString();
> >>
> >> } catch (Exception e)
> >> {
> >> log.error("Failed to create XML from Object", e);
> >> }
> >>
> >> return null;
> >> }
> >>
> >>
> >> Sergey Beryozkin-2 wrote:
> >>>
> >>> Thanks David...
> >>>
> >>> Looks like the problem has to do with that fact that an Object
> instance
> >>> is
> >>> being returned....
> >>> The method.getReturnType() is used when searching for providers...
> >>>
> >>> cheers, Sergey
> >>>
> >>>
> >>>
> >>>> -----Original Message-----
> >>>> From: cgswtsu78 [mailto:cgray@proofpoint.com]
> >>>> Sent: Tuesday, December 01, 2009 3:59 PM
> >>>> To: users@cxf.apache.org
> >>>> Subject: RE: How to use CXF and JSON
> >>>>
> >>>>
> >>>> When I do the below I get the below exception.
> EnvFromHourlyWrapper
> >>> is
> >>>> my
> >>>> wrapper object that holds a List of the objects that I want to
> return.
> >>>
> >>> I believe if you Google for "JAXRSOutInterceptor
> >>> writeResponseErrorMessage WARNING: No message body writer has been
> found
> >>> for response class", you'll find an explanation of this.
> >>>
> >>>> cgswtsu78 wrote:
> >>>> >
> >>>> > So the below will return the json representation of the Object
> o?
> >>> No
> >>>> > other setup is needed?  Thanks for the quick responses!
> >>>> >
> >>>> >
> >>>> >         @GET
> >>>> > @Path("/topspamsenderjson")
> >>>> > @Produces("application/json")
> >>>> > public Object getTopSpamSenderData() throws Exception
> >>>> > {
> >>>> > Object o = topSpamSenderService.getTopSpamSender();
> >>>> >
> >>>> > return o;
> >>>> > }
> >>>> >
> >>>> >
> >>>> >
> >>>> > KARR, DAVID (ATTCINW) wrote:
> >>>> >>
> >>>> >>> -----Original Message-----
> >>>> >>> From: cgswtsu78 [mailto:cgray@proofpoint.com]
> >>>> >>> Sent: Tuesday, December 01, 2009 3:07 PM
> >>>> >>> To: users@cxf.apache.org
> >>>> >>> Subject: RE: How to use CXF and JSON
> >>>> >>>
> >>>> >>>
> >>>> >>> Ok, I've made that switch, but I'm still confused as how
I
> need to
> >>>> >>> setup the
> >>>> >>> javax.ws.rs.core.Response.  How would I take an Object
and
> convert
> >>>> it
> >>>> >>> into a
> >>>> >>> json string?  Below is the xml sample I created, any
> suggestions
> >>> on
> >>>> >>> converting this to a json implementation would be greatly
> >>>> appreciated.
> >>>> >>
> >>>> >> I wondered what you were talking about in your previous note.
> >>>> >> Typically, you don't do anything to format the response except
> for
> >>>> >> returning the object from the method.  The container does the
> work
> >>>> of
> >>>> >> formatting the response in either XML or JSON.  Most of this
> code
> >>>> you've
> >>>> >> written wasn't necessary.  You can modify the formatting of
the
> >>>> response
> >>>> >> with "@Xml..." annotations (which also can affect the JSON
> output),
> >>>> but
> >>>> >> mostly you just let the container do the work.
> >>>> >>
> >>>> >>> KARR, DAVID (ATTCINW) wrote:
> >>>> >>> >
> >>>> >>> >> -----Original Message-----
> >>>> >>> >> From: cgswtsu78 [mailto:cgray@proofpoint.com]
> >>>> >>> >> Sent: Tuesday, December 01, 2009 2:44 PM
> >>>> >>> >> To: users@cxf.apache.org
> >>>> >>> >> Subject: How to use CXF and JSON
> >>>> >>> >>
> >>>> >>> >>
> >>>> >>> >> Hello,
> >>>> >>> >>
> >>>> >>> >> I'm very new to building RESTful webservices using
apache
> cxf
> >>>> and I
> >>>> >>> >> currently have a small sample that returns a
> >>>> >>> javax.ws.rs.core.Response
> >>>> >>> >> in
> >>>> >>> >> xml format using the @ProduceMime("application/xml").
 My
> >>>> question
> >>>> >>> is
> >>>> >>> >> how do
> >>>> >>> >> I return a javax.ws.rs.core.Response in JSON format?
 I've
> >>> tried
> >>>> >>> using
> >>>> >>> >> @ProduceMime("text/json"),
> @ProduceMime("application/json").
> >>>> I'm
> >>>> >>> > using
> >>>> >>> >> JAXB
> >>>> >>> >> to convert the object to xml and then rebuilding
the
> response,
> >>>> but
> >>>> >>> I'm
> >>>> >>> >> not
> >>>> >>> >> sure how to rebuild the response when I return
json.  Is
> this
> >>>> >>> possible
> >>>> >>> >> with
> >>>> >>> >> CXF?
> >>>> >>> >
> >>>> >>> > The "old" "@ProduceMime" annotation has been replaced
with
> >>>> >>> "@Produces".
> >>>> >>> >
> >>>> >>> > The following will make a method produce either XML
or
JSON,
> >>>> >>> depending
> >>>> >>> > on the Accept header value:
> >>>> >>> >
> >>>> >>> > @Produces({"application/xml", "application/json"})
> >>>> >>> >
> >>>> >>> >
> >>>> >>>
> >>>> >>> --
> >>>> >>> View this message in context:
> >>>> >> http://old.nabble.com/How-to-use-CXF-and-
> >>>> >>> JSON-tp26600386p26600710.html
> >>>> >>> Sent from the cxf-user mailing list archive at Nabble.com.
> >>>> >>
> >>>> >>
> >>>> >>
> >>>> >
> >>>> >
> >>>>
> >>>> --
> >>>> View this message in context:
> >>> http://old.nabble.com/How-to-use-CXF-and-
> >>>> JSON-tp26600386p26601041.html
> >>>> Sent from the cxf-user mailing list archive at Nabble.com.
> >>>
> >>>
> >>>
> >>
> >> --
> >> View this message in context:
> >> http://old.nabble.com/How-to-use-CXF-and-JSON-
> tp26600386p26612855.html
> >> Sent from the cxf-user mailing list archive at Nabble.com.
> >>
> >
> >
> 
> --
> View this message in context:
http://old.nabble.com/How-to-use-CXF-and-
> JSON-tp26600386p26613741.html
> Sent from the cxf-user mailing list archive at Nabble.com.


Mime
View raw message