Spring boot Jersey-当url具有特殊字符时,返回自定义错误而不是堆栈跟踪

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

我的Http请求Url有一些特殊字符,如- ../MyOrderId='1234'?{@sleep15}

我正在使用以下技术堆栈- Jersey+Spring引导和tomcat作为服务器

现在我想让这个url返回一些自定义错误,而不是返回堆栈跟踪,我已经尝试了异常映射程序,下面是代码 @提供者 公共类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-错误报告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中提供了根本原因的完整堆栈跟踪