tomcat - 使用 ExceptionMapper 自定义 HTTP 原因短语
问题描述
我已经定义了以下异常映射器来处理自定义HttpCustomException
package com.myapp.apis;
import com.myapp.apis.model.HttpCustomException;
import com.myapp.apis.model.HttpCustomExceptionStatusType;
import com.myapp.apis.model.HttpCustomNotAuthorizedException;
import javax.ws.rs.core.Response;
import javax.ws.rs.ext.ExceptionMapper;
import javax.ws.rs.ext.Provider;
@Provider
public class HttpCustomExceptionMapper implements ExceptionMapper <HttpCustomException> {
@Override
public Response toResponse (HttpCustomException e) {
Response response = Response.status (new HttpCustomExceptionStatusType (Response.Status.UNAUTHORIZED, e.getMessage ())).build ();
if (e instanceof HttpCustomNotAuthorizedException) {
response = Response.status (new HttpCustomExceptionStatusType (Response.Status.INTERNAL_SERVER_ERROR, e.getMessage ())).build ();
}
System.out.println ("HttpCustomExceptionMapper: " + response.getStatus () + ", " + response.getStatusInfo ().getReasonPhrase ());
return response;
}
}
当在代码中抛出 a时,我可以在 catalina.out 中看到方法HttpCustomNotAuthorizedException
末尾定义的日志消息。toResponse
因此,在请求处理期间调用了 HttpCustomExceptionMapper 类。但是,在最终响应中,我在客户端中看到,我只看到标准Not Authorized
消息,而不是我在响应中设置的自定义消息。
为什么会这样?
解决方案
推荐阅读
- c++ - Foreach 但跳过前 N 个项目?
- spring-boot - 打包工作的 Spring Tool Suite 应用程序时出错
- compiler-construction - 请给我解释一下“编译器。龙书”练习2.2.1的解决方案
- java - Java Compiler / VM 是否优化用于在调试器中检查的临时变量
- java - 如何合计两个线程的素数
- node.js - 为什么在尝试使用 npm 在监视模式下运行 tsc 时出现解析错误?
- java - Recyclerview 在布局中找不到元素的 ID
- android - Android - 启用 minifyEnabled 和 shrinkResources 后,Firebase 分析未显示在仪表板上
- c# - 什么是 MultipartFormDatacontent?
- reactjs - 上次更新后,与本地运行的 NextJs 反应非常缓慢