我的Http请求网址有一些特殊字符,如 - ../ MyOrder(ID = '1234')?{@睡眠(15)}
我正在使用以下技术堆栈 - Jersey + Spring Boot和tomcat作为服务器
现在我希望这个url返回一些自定义错误而不是返回堆栈跟踪,我试过Exception Mapper,这里是代码 @Provider 公共类JsonProcessingExceptionMapper实现ExceptionMapper {
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 - 错误报告
类型异常报告
消息位置1处的非法字符”@“不是允许作为路径模板中的名称的开头“{@sleep(15)} $ format = json”。
description 服务器遇到内部错误,导致其无法访问履行此请求。
异常< pre> java.lang.IllegalArgumentException:位置1处的非法字符“@”不允许作为路径模板中的名称“{@sleep(15)} $ format = json”。 org.glassfish.jersey.uri.internal.UriTemplateParser.parseName(UriTemplateParser.java:305) org.glassfish.jersey.uri.internal.UriTemplateParser.parse(UriTemplateParser.java:235) org.glassfish.jersey.uri.internal.UriTemplateParser<初始化>(UriTemplateParser.java:107) org.glassfish.jersey.uri.UriTemplate.createURIComponent(UriTemplate.java:891) org.glassfish.jersey.uri.UriTemplate.createURIWithStringValues(UriTemplate.java:858) org.glassfish.jersey.uri.UriTemplate.createURIWithStringValues(UriTemplate.java:797) org.glassfish.jersey.uri.UriTemplate.createURI(UriTemplate.java:762) org.glassfish.jersey.uri.internal.JerseyUriBuilder._build(JerseyUriBuilder.java:893) org.glassfish.jersey.uri.internal.JerseyUriBuilder.build(JerseyUriBuilder.java:810) org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:330) org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:219) org.springframework.boot.actuate.trace.WebRequestTraceFilter.doFilterInternal(WebRequestTraceFilter.java:110) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) org.springframework.boot.actuate.autoconfigure.EndpointWebMvcAutoConfiguration $ ApplicationContextFilterConfiguration $ 1.doFilterInternal(EndpointWebMvcAutoConfiguration.java:257) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:186) org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160) org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
注意 Apache Tomca中提供了根本原因的完整堆栈跟踪