This is my web.xml:
<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>
org.glassfish.jersey.servlet.ServletContainer
</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>rest</param-value>
</init-param>
<init-param>
<param-name>jersey.config.server.provider.classnames</param-name>
<param-value>org.glassfish.jersey.filter.LoggingFilter</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
And this is my resource class:
@Path("/main")
public class MainResource {
@XmlRootElement
public class Planet {
public int id;
public String name;
public double radius;
}
@GET
@Produces(MediaType.APPLICATION_XML)
public Planet getPlanet() {
final Planet planet = new Planet();
planet.id = 1;
planet.name = "Earth";
planet.radius = 1.0;
return planet;
}
}
And when I run the tomcat server, the log is like this:
09-Jan-2015 13:19:10.501 INFO [http-apr-8080-exec-8] org.glassfish.jersey.filter.LoggingFilter.log 1 * Server has received a request on thread http-apr-8080-exec-8
1 > GET http://localhost:8080/rest/main
1 > accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
1 > accept-encoding: gzip, deflate, sdch
1 > accept-language: en,zh-CN;q=0.8,zh;q=0.6
1 > connection: keep-alive
1 > cookie: JSESSIONID=69F79D567E7ECA27A129C477B91C7758
1 > host: localhost:8080
1 > user-agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36
09-Jan-2015 13:19:10.597 INFO [http-apr-8080-exec-8] org.glassfish.jersey.filter.LoggingFilter.log 1 * Server responded with a response on thread http-apr-8080-exec-8
1 < 200
1 < Content-Type: application/xml
09-Jan-2015 13:19:10.794 INFO [http-apr-8080-exec-8] org.glassfish.jersey.filter.LoggingFilter.log 2 * Server responded with a response on thread http-apr-8080-exec-8
2 < 500
I wonder why it shows 500 error, but I cannot find any error log about the exception stack.
Please help me.
I fixed my issue and I answer my own question now.
First, how can I enable the exception trace logging?
@Provider
public class ExceptionMapper implements javax.ws.rs.ext.ExceptionMapper<Exception> {
@Override
public Response toResponse(Exception exception) {
exception.printStackTrace();
return Response.status(500).build();
}
}
Yes, we should implement an ExceptionMapper on my own.
Second, what's the error of my code?
The class Planet should be static.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With