users@jersey.java.net

JSONp with Jersey 1.4?

From: <dguinard_at_ethz.ch>
Date: Tue, 9 Nov 2010 16:56:25 -0800 (PST)

Dear Jersey people,

We are currently in the process of opensourcing a framework for RFID
tracking based on Jersey.

I wanted to add JSONp support before going live.
I read in a number of mails on this list that a jsonp response is
triggered by:

(Paul Sandoz):
"JSONWithPadding writing is triggered for the following media types:

javascriptTypes.put("application", new
HashSet<String>(Arrays.asList("x-javascript", "ecmascript",
"javascript"))); javascriptTypes.put("text", new
HashSet<String>(Arrays.asList("ecmascript", "jscript")));"

I added this to my resources:

@Path(EPCIS_ROOT)
@Produces({Config.TEXT_HTML_WEBKIT_SAFE, APPLICATION_JSON,
APPLICATION_XHTML_XML, TEXT_XML, "application/x-javascript"})
public class RESTfulEPCIS implements ICaptureResource, IQueryResource,
IRESTfulEPCISResource, ISubscriptionResource {

but whenever I try a cURL (I'm actually using Poster but anyways) for
application/javascript I trigger an exception:

javax.ws.rs.WebApplicationException:
com.sun.jersey.api.MessageException: A message body writer for Java
class org.epcis.fosstrak.restadapter.model.Resource, and Java type
class
org.epcis.fosstrak.restadapter.model.Resource, and MIME media type
application/x-javascript was not found
        at
com.sun.jersey.spi.container.ContainerResponse.write(ContainerResponse.
java:278)
        at
com.sun.jersey.server.impl.application.WebApplicationImpl._handleReques
t(WebApplicationImpl.java:1326)
        at
com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest
(WebApplicationImpl.java:1239)
        at
com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest
(WebApplicationImpl.java:1229)
        at
com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.
java:420)
        at
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletCo
ntainer.java:497)
        at
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletCo
ntainer.java:684)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applic
ationFilterChain.java:290)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFil
terChain.java:206)
        at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperVal
ve.java:233)
        at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextVal
ve.java:191)
        at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.jav
a:127)
        at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.jav
a:102)
        at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve
.java:109)
        at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:
298)
        at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:8
59)
        at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process
(Http11Protocol.java:588)
        at
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
        at java.lang.Thread.run(Thread.java:636)
Caused by: com.sun.jersey.api.MessageException: A message body writer
for Java class org.epcis.fosstrak.restadapter.model.Resource, and Java
type class org.epcis.fosstrak.restadapter.model.Resource, and MIME
media
type application/x-javascript was not found

Any idea what's going on? Did I get it wrong? Isn't the JSONp writer
triggered automatically?

I'm deploying the app in Tomcat (6.28).

Thanks a lot for your help,

Jersey rocks ;-)

-- Dominique Guinard, Web of Things Researcher
MIT Auto-ID labs
www.guinard.org