【发布时间】: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