users@jersey.java.net

Unable to create responses with Response.build()

From: Trygve Laugstøl <trygvis_at_inamo.no>
Date: Sun, 08 Mar 2009 23:59:45 +0100

Hi!

I'm running into an issue with Jersey while trying to use the Response
class to build a proper response to the client. This is the entire
method in my resource:

@POST
@Path("sessions")
public Response addSession(@PathParam("eventId") String id, SessionV1
entity) {
     Session input = ExternalV1F.session.f(entity);
     emsServer.saveSession(id, input);

     URI location = URI.create(input.getId());

     return Response.created(location).build();
}

The Resource class is annotated with @Path("/1/events/{eventId}"),
@Produces("application/xml") and @Consumes("application/xml"). The
resources are wired with Spring.

The Response is created properly, but when Jersey is trying to return
the code to the client I get this exception:

java.lang.IllegalArgumentException: This method supports only the Types
Cookie, CacheControl, EntityTag, NewCookie and MediaType
        at
org.restlet.ext.jaxrs.internal.spi.RuntimeDelegateImpl.createHeaderDelegate(RuntimeDelegateImpl.java:98)
location = cb0aa937-ed53-4b7b-935b-d6b516eeac11
        at
com.sun.jersey.spi.container.ContainerResponse.getHeaderValue(ContainerResponse.java:185)
        at
com.sun.jersey.spi.container.servlet.ServletContainer$Writer.writeStatusAndHeaders(ServletContainer.java:238)
        at
com.sun.jersey.spi.container.ContainerResponse.write(ContainerResponse.java:209)
        at
com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:593)
        at
com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:514)
        at
com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:505)
        at
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:359)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
        at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
        at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362)
        at
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
        at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
        at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729)
        at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
        at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
        at org.mortbay.jetty.Server.handle(Server.java:324)
        at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
        at
org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:843)
        at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:647)
        at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
        at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
        at
org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:228)
        at
org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)

Does anyone know what's going on, am I doing something wrong here?

--
Trygve