<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    paulwong

    Jersey Exception Handling

    使用JERSEY框架輸出JSON,需捕獲所有的HTTP錯誤,如404等,業務錯誤及其他未定義的錯誤,將這些錯誤輸出JSON,而不是TOMCAT的錯誤。
    JERSEY已和SPRING整合。

    web.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://java.sun.com/xml/ns/javaee">

        <display-name>Restful Web Application</display-name>
        
        <servlet>
            <servlet-name>jersey-serlvet</servlet-name>
            <servlet-class>
                com.sun.jersey.spi.spring.container.servlet.SpringServlet
            </servlet-class>
            <init-param>
                <param-name>com.sun.jersey.config.property.packages</param-name>
                <param-value>restfullapi.rest.service,restfullapi.common.provider,restful.web</param-value>
            </init-param>
            <init-param>
                <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
                <param-value>true</param-value>
            </init-param>
            <load-on-startup>2</load-on-startup>
        </servlet>

        <servlet-mapping>
            <servlet-name>jersey-serlvet</servlet-name>
            <url-pattern>/*</url-pattern>
        </servlet-mapping>
        
     
         <listener>
            <listener-class>
                org.springframework.web.context.ContextLoaderListener
            </listener-class>
        </listener>
        
        <listener>
            <listener-class>
                org.springframework.web.context.request.RequestContextListener
            </listener-class>
        </listener>
        
        <context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/mvc-dispatcher-servlet.xml</param-value>
        </context-param>
        
        <!-- spring logback -->
        <context-param>
            <param-name>logbackConfigLocation</param-name>
            <param-value>classpath:logback.xml</param-value>
        </context-param>  
        <listener>
            <listener-class>ch.qos.logback.ext.spring.web.LogbackConfigListener</listener-class>
        </listener>

        <context-param>
            <param-name>webAppRootKey</param-name>
            <param-value>restfull-api</param-value>
        </context-param>
        
        <welcome-file-list>
            <welcome-file>/index.jsp</welcome-file>
        </welcome-file-list>
        

    </web-app>


    AbstractBaseRestfulException.java
    public abstract class AbstractBaseRestfulException extends Exception{

        private static final long serialVersionUID = 6779508767332777451L;
        
        public AbstractBaseRestfulException()
        {
        }
        
        public AbstractBaseRestfulException(String message)
        {
            super(message);
        }

        public abstract String getErrcode();

        public abstract void setErrcode(String errcode);

        public abstract String getDescription();

        public abstract void setDescription(String description);
        

    }


    AbstractBaseRestfulExceptionMapper.java
    import javax.ws.rs.core.MediaType;
    import javax.ws.rs.core.Response;
    import javax.ws.rs.core.Response.Status;
    import javax.ws.rs.ext.ExceptionMapper;
    import javax.ws.rs.ext.Provider;

    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;

    import com.paul.common.exception.AbstractBaseRestfulException;
    import com.paul.common.json.DefaultJsonResponse;

    @Provider
    public class AbstractBaseRestfulExceptionMapper implements ExceptionMapper<AbstractBaseRestfulException>{

        private Logger logger = LoggerFactory.getLogger(AbstractBaseRestfulExceptionMapper.class);
        
        public Response toResponse(AbstractBaseRestfulException exception) {
            
            logger.error(exception.getMessage(), exception);
            
            DefaultJsonResponse<Object> response = new DefaultJsonResponse<Object>();
            response.setDescription(exception.getDescription());
            response.setErrcode(exception.getErrcode());
            response.setResult(null);
                
            return Response.status(Status.BAD_REQUEST)
                    .entity(response)
                    .type(MediaType.APPLICATION_JSON + ";charset=utf-8")
                    .build();
        }

    }


    OtherExceptionMapper.java
    import javax.ws.rs.core.MediaType;
    import javax.ws.rs.core.Response;
    import javax.ws.rs.core.Response.Status;
    import javax.ws.rs.ext.ExceptionMapper;
    import javax.ws.rs.ext.Provider;

    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;

    import com.paul.common.json.DefaultJsonResponse;
    import com.paul.common.json.JsonResponseStatus;

    @Provider
    public class OtherExceptionMapper implements ExceptionMapper<Exception>{
        
        private Logger logger = LoggerFactory.getLogger(OtherExceptionMapper.class);

        public Response toResponse(Exception exception) {
            
            logger.error(exception.getMessage(), exception);
            
            DefaultJsonResponse<Object> response = new DefaultJsonResponse<Object>();
            response.setDescription(JsonResponseStatus.OTHER_ERROR.getMessage() + exception.getMessage());
            response.setErrcode(JsonResponseStatus.OTHER_ERROR.getCode());
            response.setResult(null);
                
            return Response.status(Status.BAD_REQUEST)
                    .entity(response)
                    .type(MediaType.APPLICATION_JSON + ";charset=utf-8")
                    .build();
        }

    }


    WebApplicationExceptionMapper.java
    import javax.ws.rs.WebApplicationException;
    import javax.ws.rs.core.MediaType;
    import javax.ws.rs.core.Response;
    import javax.ws.rs.ext.ExceptionMapper;
    import javax.ws.rs.ext.Provider;

    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;

    import com.paul.common.json.DefaultJsonResponse;

    @Provider
    public class WebApplicationExceptionMapper implements ExceptionMapper<WebApplicationException >{

        private Logger logger = LoggerFactory.getLogger(WebApplicationExceptionMapper.class);
        
        public Response toResponse(WebApplicationException exception) {
            
            logger.error(exception.getMessage(), exception);
            
            DefaultJsonResponse<Object> response = new DefaultJsonResponse<Object>();
            response.setDescription(exception.getMessage());
            response.setErrcode(String.valueOf(exception.getResponse().getStatus()));
            response.setResult(null);
                
            return Response.status(exception.getResponse().getStatus())
                    .entity(response)
                    .type(MediaType.APPLICATION_JSON + ";charset=utf-8")
                    .build();
        }

    }


    Controller中無須再處理異常
    import javax.ws.rs.DefaultValue;
    import javax.ws.rs.GET;
    import javax.ws.rs.Path;
    import javax.ws.rs.Produces;
    import javax.ws.rs.QueryParam;
    import javax.ws.rs.core.MediaType;

    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;

    import com.paul.common.json.DefaultJsonResponse;
    import com.paul.common.json.JsonResponseStatus;
    import com.paul.program.stbstart.valueobject.StbStart;
    import com.paul.stbstart.valueobject.StbStartRequest;
    import com.paul.restfullapi.rest.service.AdvertisementRestfulService;

    @Path("/advertisement")
    @Controller
    public class AdvertisementRestfulController {
        
        private Logger logger = LoggerFactory.getLogger(AdvertisementRestfulController.class);
        
        @Autowired
        AdvertisementRestfulService advertisementRestfulService;
        
        @Path("/getAdvertisement")
        @Produces({MediaType.APPLICATION_JSON + ";charset=utf-8"})
        @GET
        public DefaultJsonResponse<StbStart> getAdvertisement(
                @DefaultValue("") @QueryParam("version")String version,
                @QueryParam("token")String token) throws Exception
        {
            DefaultJsonResponse<StbStart> response = new DefaultJsonResponse<StbStart>();
            StbStartRequest request = new StbStartRequest();
            logger.info(version);
            request.setVersion(version);
            request.setToken(token);
            StbStart result = advertisementRestfulService.findByVersion(request);
            response.setResult(result);
            response.setDescription(JsonResponseStatus.SUCCESS.getMessage());
            response.setErrcode(JsonResponseStatus.SUCCESS.getCode());
            
            logger.info("----------------");
    //        double i = 1/0;
            return response;
        }
        

    }







    posted on 2014-04-28 14:44 paulwong 閱讀(1265) 評論(0)  編輯  收藏 所屬分類: JAX-RS


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 在线免费观看亚洲| 亚洲AV日韩精品久久久久久| 亚洲日日做天天做日日谢| 欧洲精品99毛片免费高清观看| 精品国产_亚洲人成在线高清| 久久WWW免费人成—看片| 亚洲午夜福利AV一区二区无码| 久久嫩草影院免费看夜色| 国产精品亚洲а∨无码播放| 97无码人妻福利免费公开在线视频| 亚洲精品国产字幕久久不卡| a毛片视频免费观看影院| 亚洲狠狠久久综合一区77777| 99视频精品全部免费观看| 亚洲人成电影院在线观看| 免费下载成人电影| 亚洲国产成人久久综合| 免费少妇a级毛片人成网| 亚洲免费日韩无码系列| 亚洲久本草在线中文字幕| 97免费人妻无码视频| 亚洲AV无码精品国产成人| 国产成人精品久久亚洲高清不卡 | 在线观看肉片AV网站免费| 亚洲福利一区二区| 国产jizzjizz免费看jizz| 成人无码视频97免费| 亚洲第一页在线观看| 国产yw855.c免费视频| 大地资源中文在线观看免费版| 亚洲一区二区三区久久| 五月天婷亚洲天综合网精品偷| 免费人成在线观看视频高潮| 亚洲人成在线播放| 亚洲免费一区二区| 69式国产真人免费视频| 麻豆69堂免费视频| 亚洲综合久久成人69| 免费jjzz在在线播放国产| 95老司机免费福利| 色婷婷综合缴情综免费观看|