【问题标题】:Showing Grizzly exceptions in Eclipse console在 Eclipse 控制台中显示 Grizzly 异常
【发布时间】:2014-10-24 10:43:28
【问题描述】:

当使用jersey-container-grizzly2-http Maven 依赖版本 2.13 使用 Eclipse 启动一个简单的 REST 接口时,在浏览器中触发错误后,我没有看到任何异常。其他日志输出在控制台中显示得很好,但异常被吞没了。

我创建了一个既没有实例化也没有调用的异常处理程序:

package mypackage.rest;
@Provider
class ExceptionHandler implements ExceptionMapper<Throwable>
{
    @Override public Response toResponse(Throwable t)
    {
        System.out.println("toResponse called");
        t.printStackTrace();
        return Response.status(Status.BAD_REQUEST).entity(t.getMessage()).build();
    }
}

Grizzly 服务器构建:

package mypackage.rest;
public class GrizzlyHttpUtil
{
    public static final URI     baseURI = UriBuilder.fromUri("http://localhost/").port(10010).build();

    public static HttpServer startThisServer()
    {
        ResourceConfig resCon = new ResourceConfig().packages("mypackage.rest");
        return server = GrizzlyHttpServerFactory.createHttpServer(baseURI, resCon);
    }
}

REST API 类

package mypackage.rest;
@Path("")
public class Rest
{
  @GET @Path("datasets") @Produces(MediaType.TEXT_HTML)
  public static String datasets()
  {
    throw new RuntimeException();
  }
}

更新 我让它与resCon.register(ExceptionHandler.class);一起工作。为什么这是必要的?为什么 ResourceConfig().packages(...) 不能自己处理?

【问题讨论】:

    标签: java eclipse rest jersey grizzly


    【解决方案1】:

    我刚刚不得不解决同样的问题。这是我说服 Grizzly HTTP 服务器显示错误的初始化代码:http://source.apidesign.org/hg/bck2brwsr/rev/18ae4fbcfb87

    Logger l = Logger.getLogger("org.glassfish.grizzly.http.server.HttpHandler");
    l.setLevel(Level.FINE);
    l.setUseParentHandlers(false);
    ConsoleHandler ch = new ConsoleHandler();
    ch.setLevel(Level.ALL);
    l.addHandler(ch);
    

    我正在使用 Grizzly 2.3.3

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-11
      • 2011-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-12
      • 2013-10-01
      相关资源
      最近更新 更多