读书人

CXF之五(错误处理)

发布时间: 2012-11-14 10:12:18 作者: rapoo

CXF之五(异常处理)

? ? ?在CXF中默认的异常处理是无法满足开发需求,经常需要把异常信息转换为JSON或者XML格式,返回给客户的,这样就只能自定义异常处理了。

? ? 在对外提供接口的时候,如果出现异常,一般会通过JSON或XML将异常码及异常信息反回给客户,这在CXF中也很容易实现。

?

第一步:编写自己的异常处理类?InvokeFaultExceptionMapper?

?

?

@Providerpublic class InvokeFaultExceptionMapper implements ExceptionMapper {public Response toResponse(Throwable ex) { StackTraceElement[] trace = new StackTraceElement[1];        trace[0] = ex.getStackTrace()[0];        ex.setStackTrace(trace);        ResponseBuilder rb = Response.status(Response.Status.INTERNAL_SERVER_ERROR);        rb.type("application/json;charset=UTF-8");        rb.entity(ex);        rb.language(Locale.SIMPLIFIED_CHINESE);        Response r = rb.build();        return r;}}

?

第二部:加载InvokeFaultExceptionMapper

?

<jaxrs:server id="expGateway" address="/expGateway"><jaxrs:inInterceptors>   <ref bean="inMessageInterceptor"/></jaxrs:inInterceptors><jaxrs:outInterceptors>    <ref bean="outMessageInterceptor"/></jaxrs:outInterceptors><jaxrs:serviceBeans><ref bean="expGatewayImpl" /></jaxrs:serviceBeans><jaxrs:extensionMappings><entry key="json" value="application/json" /><entry key="xml" value="application/xml" /></jaxrs:extensionMappings><jaxrs:languageMappings><entry key="en" value="en-gb" /></jaxrs:languageMappings><jaxrs:providers>            <bean name="code">{"operate":null,"errCode":0,"errSubCode":"err.001","cause":null,"message":"ID值异常!","localizedMessage":"ID值异常!","stackTrace":[{"className":"com.pml.service.outer.ExpGatewayImpl","fileName":"ExpGatewayImpl.java","lineNumber":59,"methodName":"getUser","nativeMethod":false}]}
?

CXF之五(错误处理)

?

读书人网 >开源软件

热点推荐