grizzly不会在请求中记录异常

时间:2014-07-01 20:18:16

标签: java java-ee error-logging grizzly

我已经设置了这样一个简单的球衣服务器:

ResourceConfig rc = new ResourceConfig().packages("com.example.jersey_test/services");
HttpServer server = GrizzlyHttpServerFactory.createHttpServer(URI.create(API_URI), rc);

我有一个简单抛出异常的bean:

@Path("persons")
public class PersonService {
    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public String getPersons() {
        java.util.logging.Logger.getGlobal().log(Level.INFO, "test");
        throw new RuntimeException("test");
    }
}

日志输出如下(因此日志记录有效,但不记录异常):

Jul 01, 2014 10:19:33 PM com.example.jersey_test.services.PersonService getPersons
INFO: test

响应是500,看起来如下(因此不包括堆栈跟踪):

grizzly 500 error

作为this answer states,grizzly应该使用默认的日志记录API。我做错了什么?

2 个答案:

答案 0 :(得分:3)

Grizzly没有例外,它被泽西岛处理。 除了泽西岛提供的以外,Grizzly没有关于错误的信息:

Response.sendError(int code,String description)

泽西岛传球(500,"请求失败。")

答案 1 :(得分:-1)

有一种方法可以启动一个灰熊服务器,它既记录并打印出响应中的异常:

HttpServer server =
    GrizzlyWebContainerFactory.create(getBaseURI(),
    Collections.singletonMap("javax.ws.rs.Application",
    "class.that.extends.ResourceConfig"));