<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


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


    網站導航:
     
    主站蜘蛛池模板: 手机看片久久国产免费| 免费无码又爽又刺激高潮软件| 永久免费在线观看视频| 亚洲大片在线观看| 毛片在线全部免费观看| 久久九九亚洲精品| 九九热久久免费视频| 亚洲精品国产品国语在线| 两个人日本WWW免费版 | 一边摸一边桶一边脱免费视频| 国产高清在线免费| 青青久久精品国产免费看| 亚洲成年人啊啊aa在线观看| 一区二区三区免费在线视频| 亚洲综合区小说区激情区| 国产综合免费精品久久久| 久久精品国产亚洲综合色| 91精品国产免费| 男人天堂2018亚洲男人天堂| 在线观看成人免费视频| 偷自拍亚洲视频在线观看| 亚洲综合色在线观看亚洲| 国产在线观看无码免费视频| 亚洲电影国产一区| 嫖丰满老熟妇AAAA片免费看| 国产精品亚洲精品久久精品| 中文字幕中韩乱码亚洲大片| 99国产精品免费视频观看| 456亚洲人成在线播放网站| 免费一级一片一毛片| 99久久免费国产特黄| 亚洲精品国产手机| 国产免费观看黄AV片| 在线观看免费无码视频| 久久夜色精品国产噜噜亚洲a| 免费看一级做a爰片久久| 免费精品99久久国产综合精品| 亚洲娇小性色xxxx| 亚洲精品无码专区久久同性男| 一级毛片不卡片免费观看| 亚洲精品色播一区二区|