- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有点束手无策......想要我的蛋糕并把它也吃掉。
我想记录我的应用程序抛出的所有 异常。因此,如果有人点击了错误的 URL,我想将堆栈跟踪记录到 SLF4J。
所以您可能在想,‘嘿,这很简单,只需实现一个异常映射器并记录异常即可。’所以我做到了:
public class RestExceptionMapper implements ExceptionMapper<java.lang.Exception> {
private static final Logger log = LoggerFactory.getLogger(RestExceptionMapper.class);
/**
* {@inheritDoc}
*/
@Override
public Response toResponse(Exception exception) {
log.error("toResponse() caught exception", exception);
return null;
}
}
如果您这样做,当有人输入错误的 URL 时,他们将收到 500 错误,而不是 404 错误。有人会猜测返回 null 会将异常传播到链处理程序中,但 Jersey 不会这样做。它实际上提供了很少的信息,为什么它会选择一个处理程序而不是另一个处理程序......
有没有人遇到过这个问题,你是怎么解决的?
最佳答案
您可以使用 RequestEventListener在不干扰任何现有处理的情况下监听异常事件并记录可抛出的事件。请注意,这意味着首先注册一个 ApplicationEventListener
,然后返回一个 RequestEventListener
的实例。以下内容均在单个类中实现:
@Provider
public class ExceptionLogger implements ApplicationEventListener, RequestEventListener {
private static final Logger log = LoggerFactory.getLogger(RequestExceptionLogger.class);
@Override
public void onEvent(final ApplicationEvent applicationEvent) {
}
@Override
public RequestEventListener onRequest(final RequestEvent requestEvent) {
return this;
}
@Override
public void onEvent(RequestEvent paramRequestEvent) {
if(paramRequestEvent.getType() == Type.ON_EXCEPTION) {
log.error("", paramRequestEvent.getException());
}
}
}
关于java - Jersey ......如何记录所有异常,但仍然调用 ExceptionMappers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23048212/
我如何注册一个包罗万象的 ExceptionMapper确实如此 不是 拦截 WebApplicationException哪个 Jersey 提供特殊处理? 更新 :我提交了此功能请求:http:/
抱歉我的英语不好。我正在使用 grizzly 和 jersey 构建 Web 应用程序。 我是这样实现的 ErrorModel errorModel = new ErrorModel(
我将 Jersey 用于 REST 网络服务。 每当我没有从服务层获得任何对象时,我都会通过抛出 NotFoundException(Package com.sun.jersey.api) 来处理所有
我的应用程序提供了一个 RESTful 接口(interface)来执行某些操作。我正在使用 ExceptionMapper 捕获 NoResultException 或 EntityNotFound
假设我有 3 个想要“捕获”的异常类: Jersey 的 WebApplicationException MyException 扩展了 RuntimeException 异常 我希望 WebAppl
我正在为 EJB 服务开发 REST-facade,这意味着它调用 EJB,将结果转换为 REST 调用者能够理解的表示形式,然后返回它(作为 json 或 xml)。所有这些都表现出色。但是 EJB
我的 Spring Boot + Jersey REST 服务无法按预期工作。 EmailExistsException 在 UserController 中抛出,但我只收到错误 500。一直都是。而
我正在抛出异常 MyCustomException从我的应用程序。 (EJB 层) 我在 Web 服务层中有一个异常映射器,如下所示 - package net.webservices; import
我正在尝试调用此异常映射器以返回 404 未找到响应,但它一直返回 500 内部错误。 Jersey 版本是 2.22.1。下面的代码片段。感谢所有帮助。 谢谢。 异常映射器类。 package or
我有一个ExceptionMapper,它是通用公共(public)库的一部分: @Provider public class GenericExceptionMapper implements Ex
我正在使用 Jersey 在 java 中做一个 Web 服务。我对 Jersey 的依赖是: /* JAX-RS Impl (Jersey) */ compile 'org.glassfish.je
问题Exception Handling/Mapping for a particular class让我想到了如何将 ExceptionMapper 注册到特定资源 Method 的问题。 我试过像
我正在尝试调用此异常映射器以返回 404 未找到响应,但它一直返回 500 内部错误。 Jersey 版本是 2.22.1。下面的代码片段。感谢所有帮助。 谢谢。 异常映射器类。 package or
在 Quarkus 中,异常映射器返回的实体似乎被包装在另一个实体中。 提供一个 JAX-RS 异常映射器,例如: @Provider public class WebhookExceptionMap
我有一个使用RESTeasy 2.0.1.GA在JAX-RS中使用ExceptionMapper的方案。一切正常。 我现在想使用RESTeasy的mock mechanism测试整个过程。不幸的是我的
我为特定对象制作了一个 RESTFUL-API 并使用 javax.validation.Constraints 进行验证,当我执行应用程序时它按预期工作并且 ExceptionMapper 类被正确
我有 REST Web 服务,我使用 Jersey Test、Mockito、Junit 对其进行测试。当 Web 服务方法成功执行时,我得到正确的响应。如果数据无效,则抛出自定义异常,必须由 Exc
我正在开发一个使用 Dropwizard 的应用程序,它具有 ExceptionMapper 的实现:https://github.com/dropwizard/dropwizard/blob/mas
我正在使用 Jersey 2.5.1 和 Jackson 2.2。用于构建 JSON Rest Web 服务。我也用 2 个 ExceptionMappers 启动并运行它,但对于“非 json”请求
我在应用程序中使用RestEasy,并且从ExceptionMapper接口(interface)实现了toResponse方法。 我的问题是:这个方法在海量请求的环境下会不会有问题(很多请求会导致抛
我是一名优秀的程序员,十分优秀!