Jersey - 当url具有特殊字符

时间:2015-05-21 12:47:52

标签: spring-boot jersey-2.0

我的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 - 错误报告

HTTP状态500 - 位置1处的非法字符“@”不允许作为路径模板中名称的开头“{@sleep(15 )} $ format = json“。

类型异常报告

消息位置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中提供了根本原因的完整堆栈跟踪

0 个答案:

没有答案