Spring boot Jersey-当url具有特殊字符时,返回自定义错误而不是堆栈跟踪
我的Http请求Url有一些特殊字符,如- ../MyOrderId='1234'?{@sleep15} 我正在使用以下技术堆栈- Jersey+Spring引导和tomcat作为服务器 现在我想让这个url返回一些自定义错误,而不是返回堆栈跟踪,我已经尝试了异常映射程序,下面是代码 @提供者 公共类JsonProcessingExceptionMapper实现ExceptionMapper{Spring boot Jersey-当url具有特殊字符时,返回自定义错误而不是堆栈跟踪,spring-boot,jersey-2.0,Spring Boot,Jersey 2.0,我的Http请求Url有一些特殊字符,如- ../MyOrderId='1234'?{@sleep15} 我正在使用以下技术堆栈- Jersey+Spring引导和tomcat作为服务器 现在我想让这个url返回一些自定义错误,而不是返回堆栈跟踪,我已经尝试了异常映射程序,下面是代码 @提供者 公共类JsonProcessingExceptionMapper实现ExceptionMapper{ public static class Error { public Stri
public static class Error {
public String key;
public String message;
}
@Override
public Response toResponse(IllegalArgumentException exception) {
Error error = new Error();
error.key = "bad-json";
error.message = exception.getMessage();
return Response.status(Status.BAD_REQUEST).entity(error).build();
}
}
但不管有没有这个,我都会得到下面的堆栈跟踪-
Apache Tomcat/7.0.54-错误报告HTTP状态500-路径模板{@sleep15}$format=json中不允许位置1处的非法字符@作为名称的开头。键入异常报告路径模板{@sleep15}中不允许位置1处的消息非法字符@作为名称的开头$format=json。说明服务器遇到内部错误,无法满足此请求。异常java.lang.IllegalArgumentException:路径模板{@sleep15}$format=json中,位置1处的非法字符@不允许作为名称的开头。
org.glassfish.jersey.uri.internal.UriTemplateParser.parseNameUriTemplateParser.java:305
org.glassfish.jersey.uri.internal.UriTemplateParser.parseUriTemplateParser.java:235
org.glassfish.jersey.uri.internal.UriTemplateParser.UriTemplateParser.java:107
org.glassfish.jersey.uri.UriTemplate.createURIComponentUriTemplate.java:891
org.glassfish.jersey.uri.UriTemplate.createURIWithStringValuesUriTemplate.java:858
org.glassfish.jersey.uri.UriTemplate.createURIWithStringValuesUriTemplate.java:797
org.glassfish.jersey.uri.UriTemplate.createUriTemplate.java:762
org.glassfish.jersey.uri.internal.JerseyUriBuilder.\u buildJerseyUriBuilder.java:893
org.glassfish.jersey.uri.internal.JerseyUriBuilder.buildJerseyUriBuilder.java:810
org.glassfish.jersey.servlet.ServletContainer.serviceServletContainer.java:330
org.glassfish.jersey.servlet.ServletContainer.serviceServletContainer.java:219
org.springframework.boot.actuate.trace.WebRequestTraceFilter.doFilterInternalWebRequestTraceFilter.java:110
org.springframework.web.filter.OncePerRequestFilter.doFilterOncePerRequestFilter.java:107
org.springframework.boot.actuate.autoconfigure.EndpointWebMvcAutoConfiguration$ApplicationContextFilterConfiguration$1.doFilterInternalEndpointWebMvcAutoConfiguration.java:257
org.springframework.web.filter.OncePerRequestFilter.doFilterOncePerRequestFilter.java:107
org.springframework.security.web.FilterChainProxy.doFilterInternalFilterChainProxy.java:186
org.springframework.security.web.FilterChainProxy.doFilterFilterChainProxy.java:160
org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternalHiddenHttpMethodFilter.java:77
org.springframework.web.filter.OncePerRequestFilter.doFilterOncePerRequestFilter.java:107
org.springframework.web.filter.RequestContextFilter.doFilterInternalRequestContextFilter.java:99
org.springframework.web.filter.OncePerRequestFilter.doFilterOncePerRequestFilter.java:107
注意,Apache Tomca中提供了根本原因的完整堆栈跟踪