users@jersey.java.net

RE: [Jersey] Jsonp issue:jaxb can't convert to json object to user client.

From: beanor <beanor_at_gmail.com>
Date: Tue, 3 Mar 2009 17:45:47 -0800 (PST)

Mark:

Thanks for your quick reply. I try it with your suggestion,But it have
failed. The error is same, The trace message is same. actually, before post
the thread, I had made a try on your way, The try had failed.



Rabick, Mark (MS) wrote:
>
> I'm not sure but your error message:
>
> error.jsonp.msg.body.writer.not.found([com.jersey.sample.model.Person_at_1735602,
> com.jersey.sample.model.Person_at_113cf49,
> com.jersey.sample.model.Person_at_18df055], application/json)
>
> Indicates it can't find a provider with a MessageBodyWriter that
> 'produces' application/json... The packaged JSONJAXBContext in your
> @Provider supplies a JSON MessageBodyWriter but the resource matching for
> application/x-javascript isn't understood by that writer. Your resource
> class is annotated:
>
> @Path("/jsonp")
> @Produces("application/x-javascript")
> public class JsonpResource {
>
> I think it should be:
>
> @Path("/jsonp")
> @Produces("application/json")
> public class JsonpResource {
>
> Or you can annotate the specific method:
>
> @GET @Path("/json")
> @Produces("application/json")
> public JSONWithPadding getJson(@QueryParam("callback") String
> callback) throws Exception {
> JSONObject obj = new JSONObject();
> obj.put("name1", "jackDou");
> obj.put("name2", "redhacker");
> obj.put("name3", "beanor");
> return new JSONWithPadding(obj, callback);
> }
>
> --mark
>
> _______________________________________________
> Mark A. Rabick - Software Engineer
> Em: mark.rabick_at_ngc.com
>
>
>
>> -----Original Message-----
>> From: beanor [mailto:beanor_at_gmail.com]
>> Sent: Tuesday, March 03, 2009 3:54 AM
>> To: users_at_jersey.dev.java.net
>> Subject: [Jersey] Jsonp issue:jaxb can't convert to json
>> object to user client.
>>
>>
>> hi
>>
>> Follow is my code:
>>
>> Resouce class file:
>>
>> @Path("/jsonp")
>> @Produces("application/x-javascript")
>> public class JsonpResource {
>> private static final List<Person> persons = new
>> ArrayList<Person>();
>> static {
>> persons.add(new Person("zhangsan","women","11"));
>> persons.add(new Person("lisi","man","12"));
>> persons.add(new Person("wangwu","women","21"));
>> }
>> @GET
>> @Path("/string")
>> public JSONWithPadding getString(@QueryParam("callback") String
>> callback) {
>> return new JSONWithPadding("'helloWorld'", callback);
>> }
>>
>> @GET
>> @Path("/json")
>> public JSONWithPadding getJson(@QueryParam("callback")
>> String callback) throws Exception {
>> JSONObject obj = new JSONObject();
>> obj.put("name1", "jackDou");
>> obj.put("name2", "redhacker");
>> obj.put("name3", "beanor");
>> return new JSONWithPadding(obj, callback);
>> }
>>
>> @GET
>> @Path("/jaxb")
>> public JSONWithPadding getJaxb(@QueryParam("callback")
>> String callback) throws Exception {
>> return new JSONWithPadding(new
>> GenericEntity<List<Person>>(persons){}, callback);
>> }
>> }
>>
>> Jaxb class file:
>>
>> package com.jersey.sample.model;
>>
>> import java.util.HashSet;
>> import java.util.Set;
>>
>> import javax.xml.bind.annotation.XmlAccessType;
>> import javax.xml.bind.annotation.XmlAccessorType;
>> import javax.xml.bind.annotation.XmlRootElement;
>>
>> @XmlAccessorType(XmlAccessType.FIELD)
>> @XmlRootElement(name = "person")
>> public class Person {
>> private String name;
>> private String sex;
>> private String age;
>> private int mark;
>> private Set<Child> childSet = new HashSet<Child>();
>> public Person(String name, String sex, String age) {
>> super();
>> this.name = name;
>> this.sex = sex;
>> this.age = age;
>> }
>> public String getName() {
>> return name;
>> }
>> public void setName(String name) {
>> this.name = name;
>> }
>> public String getSex() {
>> return sex;
>> }
>> public void setSex(String sex) {
>> this.sex = sex;
>> }
>> public String getAge() {
>> return age;
>> }
>> public void setAge(String age) {
>> this.age = age;
>> }
>> /**
>> * @return the childSet
>> */
>> public Set<Child> getChildSet() {
>> return childSet;
>> }
>> /**
>> * @param childSet the childSet to set
>> */
>> public void setChildSet(Set<Child> childSet) {
>> this.childSet = childSet;
>> }
>> /**
>> * @return the mark
>> */
>> public int getMark() {
>> return mark;
>> }
>> /**
>> * @param mark the mark to set
>> */
>> public void setMark(int mark) {
>> this.mark = mark;
>> }
>> }
>>
>> Provider class file:
>>
>> @Provider
>> public final class JAXBContextResolver implements
>> ContextResolver<JAXBContext> {
>>
>> private final JAXBContext context;
>>
>> private final Set<Class> types;
>>
>> private final Class[] cTypes = {Person.class};
>>
>> public JAXBContextResolver() throws Exception {
>> this.types = new HashSet(Arrays.asList(cTypes));
>> this.context = new
>> JSONJAXBContext(JSONConfiguration.natural().build(), cTypes);
>> }
>>
>> public JAXBContext getContext(Class<?> objectType) {
>> return (types.contains(objectType)) ? context : null;
>> }
>> }
>>
>> Jsp File:
>>
>> <%@ page language="java" contentType="text/html; charset=utf-8"
>> pageEncoding="utf-8"%>
>> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
>> "http://www.w3.org/TR/html4/loose.dtd">
>> <html>
>> <head>
>> <meta http-equiv="Content-Type" content="text/html;
>> charset=utf-8"> <title>Insert title here</title> </head>
>> <body> <script type="text/javascript"> function
>> stringCallback(stringObj) {
>> document.writeln("<p>============== stringCallback
>> result =========</p>");
>> document.writeln(stringObj);
>> }
>> function jsonCallback(jsonObj) {
>> document.writeln("<p>============== jsonCallback result
>> =========</p>");
>> document.writeln(jsonObj["name1"]);
>> document.writeln(jsonObj.name2);
>> document.writeln(jsonObj.name3)
>> }
>> function jaxbCallback(jaxbObj) {
>> document.writeln("<p>============== jaxbCallback result
>> =========</p>");
>> document.writeln(jaxbObj);
>> }
>> </script>
>> <script type="text/javascript"
>> src="/jerseydemo/resources/jsonp/string?callback=stringCallbac
> k"></script>
>> <script type="text/javascript"
>> src="/jerseydemo/resources/jsonp/json?callback=jsonCallback"></script>
>> <script type="text/javascript"
>> src="/jerseydemo/resources/jsonp/jaxb?callback=jaxbCallback"></script>
>> </body>
>> </html>
>>
>> Run Console log:
>>
>> 2009-3-3 17:35:24
>> com.sun.jersey.json.impl.provider.entity.JSONWithPaddingProvid
>> er writeTo
>> 严重: [failed to localize]
>> error.jsonp.msg.body.writer.not.found([com.jersey.sample.model
>> .Person_at_1735602,
>> com.jersey.sample.model.Person_at_113cf49,
>> com.jersey.sample.model.Person_at_18df055], application/json)
>> 2009-3-3 17:35:24
>> com.sun.jersey.server.impl.application.WebApplicationImpl
>> onException
>> 严重: Internal server error
>> javax.ws.rs.WebApplicationException
>> at
>> com.sun.jersey.json.impl.provider.entity.JSONWithPaddingProvid
>> er.writeTo(JSONWithPaddingProvider.java:127)
>> at
>> com.sun.jersey.json.impl.provider.entity.JSONWithPaddingProvid
>> er.writeTo(JSONWithPaddingProvider.java:67)
>> at
>> com.sun.jersey.spi.container.ContainerResponse.write(Container
>> Response.java:254)
>> at
>> com.sun.jersey.server.impl.application.WebApplicationImpl._han
> dleRequest(WebApplicationImpl.java:578)
>> at
>> com.sun.jersey.server.impl.application.WebApplicationImpl.hand
>> leRequest(WebApplicationImpl.java:502)
>> at
>> com.sun.jersey.server.impl.application.WebApplicationImpl.hand
>> leRequest(WebApplicationImpl.java:493)
>> at
>> com.sun.jersey.spi.container.servlet.WebComponent.service(WebC
>> omponent.java:308)
>> at
>> com.sun.jersey.spi.container.servlet.ServletContainer.service(
>> ServletContainer.java:314)
>> at
>> com.sun.jersey.spi.container.servlet.ServletContainer.service(
>> ServletContainer.java:239)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilt
>> er(ApplicationFilterChain.java:290)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(Appli
>> cationFilterChain.java:206)
>> at
>> com.jersey.sample.filter.AuthFilter.doFilter(AuthFilter.java:38)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilt
>> er(ApplicationFilterChain.java:235)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(Appli
>> cationFilterChain.java:206)
>> at
>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardW
>> rapperValve.java:233)
>> at
>> org.apache.catalina.core.StandardContextValve.invoke(StandardC
>> ontextValve.java:175)
>> at
>> org.apache.catalina.core.StandardHostValve.invoke(StandardHost
>> Valve.java:128)
>> at
>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReport
>> Valve.java:102)
>> at
>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEn
>> gineValve.java:109)
>> at
>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdap
>> ter.java:263)
>> at
>> org.apache.coyote.http11.Http11Processor.process(Http11Process
>> or.java:844)
>> at
>> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandle
> r.process(Http11Protocol.java:584)
>> at
>> org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.
> java:447)
>> at java.lang.Thread.run(Thread.java:595)
>>
>>
>> (1)<script type="text/javascript"
>> src="/jerseydemo/resources/jsonp/string?callback=stringCallbac
> k"></script>
>> (2)<script type="text/javascript"
>> src="/jerseydemo/resources/jsonp/json?callback=jsonCallback"></script>
>> (3)<script type="text/javascript"
>> src="/jerseydemo/resources/jsonp/jaxb?callback=jaxbCallback"></script>
>>
>> (1)(2) are working nice,But (3) is working bad.
>>
>> any help?
>> --
>> View this message in context:
>> http://n2.nabble.com/Jsonp-issue%3Ajaxb-can%27t-convert-to-jso
> n-object-to-user-client.-tp2414324p2414324.html
>> Sent from the Jersey mailing list archive at Nabble.com.
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe_at_jersey.dev.java.net
>> For additional commands, e-mail: users-help_at_jersey.dev.java.net
>>
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe_at_jersey.dev.java.net
> For additional commands, e-mail: users-help_at_jersey.dev.java.net
>
>
>

-- 
View this message in context: http://n2.nabble.com/Jsonp-issue%3Ajaxb-can%27t-convert-to-json-object-to-user-client.-tp2414324p2419033.html
Sent from the Jersey mailing list archive at Nabble.com.