首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SpringMVC-RESTEasy和异常映射

SpringMVC-RESTEasy和异常映射
EN

Stack Overflow用户
提问于 2011-02-18 07:51:46
回答 1查看 2.4K关注 0票数 0

我正在使用HTTP集成(使用HTTP2.0的springmvc- RESTEasy,Spring3.0)我想通过声明RestEasy异常映射提供者将我的应用程序异常映射到RESTEasy响应。目前,我的应用程序没有显式地扩展javax.ws.rs.core.Application,理想情况下,我希望依赖于框架对异常映射提供程序的自动扫描。

下面是我的一个异常映射器的样子。

代码语言:javascript
复制
@Provider public class MyAppExceptionMapper implements ExceptionMapper<MyAppException> {
    public Response toResponse(MyAppException exception) {
            return Response.status(Response.Status.BAD_REQUEST).build();
    } 
}

我的异常类看起来像这样

代码语言:javascript
复制
public class MyAppException extends RuntimeException {
    public MyAppException(String s, Throwable t) {
     super(s,t);
    }
}

当我的应用程序抛出一个MyAppException时,它不会被映射到HTTP-400响应(我从框架中得到通常的HTTP-500 )

我是不是漏掉了什么?如果这是一个没有向框架“注册”提供者的问题,那么当我使用springmvc-resteasy时,我如何注册我的异常映射器?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-02-23 05:53:56

我收到了Solomon Duskis的回复,我把它贴在这里,以确保遇到这个问题的其他人可以快速解决它。正如我所怀疑的那样,我不得不以某种方式配置Spring来配置RESTEasy来扫描我的异常映射提供程序。我在异常映射器中添加了一个@Component,它可以将MyAppException映射到正确的HTTP响应代码(在本例中是400而不是500)。但是,这里有一个警告: RESTEasy不序列化MyAppException,因为"java.lang.StackTraceElement没有无参数的默认构造函数“。我正在为这个次要问题寻找解决方案。

您可以自定义组件扫描到@Providers,或者将@Component添加到异常映射器以将其添加到您的上下文中。下面是如何从@Providers进行扫描:

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5036166

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档