Hi all - I'm seeing an exception coming back from Jersey for one of my
test cases and I can't determine exactly where its coming from in my
code. I suspect its a NPE from within the class that my resource is
returning but I'm not sure.
Couple of questions:
1) When a resource returns a JAXB class as opposed to a Response object,
what actually is supposed to happen if the returned object is null?
2) If the response is going to be null, is it better generate an
exception that gets mapped in Jersey to provide a more interesting
response to the client?
Here is my stack trace - is this caused by an NPE or other runtime
exception in the returned class during the marshaling?
2016-06-27 16:04:54.993 [tomcat-http--3] DEBUG
c.s.j.s.container.ContainerResponse - Mapped exception to response: 405
javax.ws.rs.WebApplicationException: null
at
com.sun.jersey.server.impl.uri.rules.TerminatingRule.accept(TerminatingRule.java:66)
at
com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)
at
com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
at
com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
at
com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1542)
.....
2016-06-27 16:05:26.511 [tomcat-http--4] ERROR
c.s.j.s.container.ContainerResponse - The exception contained within
MappableContainerException could not be mapped to a response,
re-throwing to the HTTP container
java.io.EOFException: No content to map to Object due to end of input
at
org.codehaus.jackson.map.ObjectMapper._initForReading(ObjectMapper.java:2766)
at
org.codehaus.jackson.map.ObjectMapper._readValue(ObjectMapper.java:2682)
at
org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1308)
at
org.codehaus.jackson.jaxrs.JacksonJsonProvider.readFrom(JacksonJsonProvider.java:419)
at
com.sun.jersey.spi.container.ContainerRequest.getEntity(ContainerRequest.java:490)
at
com.sun.jersey.spi.container.ContainerRequest.getEntity(ContainerRequest.java:555)
at
com.sun.jersey.server.impl.model.method.dispatch.FormDispatchProvider.processForm(FormDispatchProvider.java:103)
at
com.sun.jersey.server.impl.model.method.dispatch.FormDispatchProvider.access$000(FormDispatchProvider.java:68)
at
com.sun.jersey.server.impl.model.method.dispatch.FormDispatchProvider$FormParameterProvider.getInjectableValues(FormDispatchProvider.java:115)
at
com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$EntityParamInInvoker.getParams(AbstractResourceMethodDispatchProvider.java:153)
at
com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:183)
at
com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)
at
com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302)
at
com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
at
com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)
at
com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
at
com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
at
com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1542)
at
com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1473)
at
com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419)
at
com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409)
at
com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409)
at
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:558)
at
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:733)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
Thanks for any help!
-Richard