【问题标题】:grizzly does not log Exceptions in requestsgrizzly 不在请求中记录异常
【发布时间】:2014-08-22 12:08:24
【问题描述】:

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

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,如下所示(因此不包括堆栈跟踪):

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

【问题讨论】:

    标签: java jakarta-ee error-logging grizzly


    【解决方案1】:

    异常不会出现在灰熊身上,而是由泽西处理。 除了 Jersey 通过以下方式提供之外,Grizzly 没有关于该错误的信息:

    Response.sendError(int code, String description)

    Jersey 通过的地方(500,“请求失败。”)

    【讨论】:

    • 谢谢,这证实了我从代码中猜到的。我现在注册了一个异常映射器来记录异常
    【解决方案2】:

    有一种方法可以启动 grizzly 服务器,在响应中记录并打印出异常:

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

    【讨论】:

      猜你喜欢
      • 2015-05-21
      • 2015-10-01
      • 1970-01-01
      • 2020-03-27
      • 2011-04-25
      • 2013-09-09
      • 2018-08-15
      • 2015-12-30
      • 1970-01-01
      相关资源
      最近更新 更多