<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


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


    網站導航:
     
    主站蜘蛛池模板: 67pao强力打造高清免费| 在线播放免费人成毛片乱码| 日本在线观看免费高清| 黄色视频在线免费观看| 一级毛片成人免费看免费不卡| 久草视频在线免费| 日韩a级毛片免费视频| 亚洲AV成人无码网天堂| 成人特级毛片69免费观看| 日韩免费电影网站| 欧美男同gv免费网站观看| 亚洲第一黄片大全| 老汉色老汉首页a亚洲| 亚洲乱色伦图片区小说| 精品人妻系列无码人妻免费视频 | 一级做a爰性色毛片免费| 玖玖在线免费视频| 成熟女人牲交片免费观看视频| 亚洲AV无码乱码在线观看| 亚洲免费视频在线观看| 亚洲色成人网站WWW永久四虎| 一级午夜a毛片免费视频| 91短视频在线免费观看| 国产又粗又长又硬免费视频| 情人伊人久久综合亚洲| 国产午夜亚洲精品| 美女无遮挡拍拍拍免费视频| 曰批全过程免费视频播放网站| 国产免费变态视频网址网站| 久久精品国产亚洲| 亚洲a无码综合a国产av中文| 欧洲人免费视频网站在线| 午夜无遮挡羞羞漫画免费| 亚洲人成网站在线播放vr| 亚洲人成人网毛片在线播放| 巨胸喷奶水视频www免费视频| 在线观看日本免费a∨视频| 国产亚洲成人在线播放va| 亚洲成a人片在线看| 成全在线观看免费观看大全| 日本xxwwxxww在线视频免费|