2016-04-11 64 views
0

這是我SqlExceptionMapper新澤西州的SQLException映射不叫

@Provider 
public class SqlExceptionMapper implements ExceptionMapper<SQLException> { 

    @Override 
    public Response toResponse(SQLException e){ 
     return ResponseBuilder.error(Response.Status.UNAUTHORIZED.getStatusCode(), "success", null, e.getMessage());   
    } 

} 

在這裏,我拋出的異常在我的函數的catch塊

public void myfunction()throws SQLException { 
    try {  
     // some code that throws an sql exception 
    } catch (SQLException e) { 
     final Logger logger = Logger.getLogger(Image.class); 
     logger.error("This is error", e); 
     throw new SQLException(); 
    } 
} 

這是我的web.xml

<!DOCTYPE web-app PUBLIC 
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 
"http://java.sun.com/dtd/web-app_2_3.dtd" > 

<web-app> 
    <display-name>Archetype Created Web Application -image Rest API's</display-name> 
    <servlet> 
     <servlet-name>jersey-serlvet</servlet-name> 
     <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> 
     <init-param>  
      <param-name>com.sun.jersey.config.property.packages</param-name>  
      <param-value>com.image.controller;com.image.exceptionmapper</param-value> 
      <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name> 
      <param-value>true</param-value>  
     </init-param> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>jersey-serlvet</servlet-name> 
     <url-pattern>/*</url-pattern> 
    </servlet-mapping> 
</web-app> 

我調試了我的代碼,並且我的catch塊拋出了SQLException,唯一的問題是它沒有映射到映射器whi我已創建。

+0

我不認爲你可以註冊exceptionmapper作爲「包」。我不知道你正在使用哪種版本的球衣,但通常使用ResourceConfig對象更方便,請參閱[這個問題](http://stackoverflow.com/questions/31501110/registering-a-provider-編程功能於球衣-其中-器具-exceptionmapp)。希望能幫助到你。 – lrnzcig

+0

你使用哪種運動衫版本,1.x?什麼是類'SqlExceptionMapper'的包名?會發生什麼 - 你有500嗎? –

+0

我用不同的名稱重新編譯了我的代碼我使用SQLExceptionMapper將其從sqlExceptionMapper中更改爲它,並且它正在工作。 謝謝 –

回答

0

我認爲我在命名時做了一些錯誤的事情。

我將我的類從sqlExceptionMapper重命名爲SQLExceptionMapper並重新編譯它,它正在爲我工​​作。

謝謝