2011-05-05 257 views
2

我有一個寧靜的應用程序,它將一些聯繫人導入數據庫。當文件沒有通過restful上傳時,我想拋出異常。所以我寫了一個異常類DenemeException,並且我想發送狀態404,當我運行代碼時,我得到這個錯誤org.jboss.resteasy.spi.UnhandledException:exception.DenemeException:關閉bu exler 可以幫我嗎?異常映射 - org.jboss.resteasy.spi.UnhandledException:exception.DenemeException:關閉ex ex

DenemeExceptionMapper.java

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




@Provider 
public class DenemeExceptionMapper implements ExceptionMapper<DenemeException> { 
    @Override 
public Response toResponse(DenemeException ex){ 
    return Response.status(Response.Status.FORBIDDEN).entity(ex.getMessage()).type(MediaType.TEXT_PLAIN).build(); 
} 

} 

DenemeException.java

public class DenemeException extends Exception { 
/** 
* 
*/ 
private static final long serialVersionUID = 1L; 

public DenemeException(String message) { 
    super(message); 
} 

}

我的休息控制器

@POST 
@Path("/import") 
@Produces({"application/xml","application/json"}) 
public String saveContacts (@Context HttpServletRequest request, @Context HttpServletResponse response, 
     @QueryParam("alt") String alt) throws DenemeException { 

    byte[] content = null; 

    FileItemStream item = null; 
    try{ 
    ServletFileUpload upload = new ServletFileUpload(); 
    FileItemIterator iterator = upload.getItemIterator(request); 

    while (iterator.hasNext()) { 
     item = iterator.next(); 
     if ("fileUpload".equals(item.getFieldName())){ 

      content = IOUtils.toByteArray(item.openStream()); 

      } 
     } 
    } 
    catch(Exception e){ 
     System.out.println("hata oldu"); 
     throw new DenemeException("off bu exler"); 
    } 

回答

1

您需要使用註冊ExceptionMapper應用,例如

public class HelloWorldApplication extends Application { 

    private Set<Object> singletons = new HashSet(); 
    private Set<Class<?>> empty = new HashSet(); 

    public HelloWorldApplication() { 
     // ADD YOUR RESTFUL RESOURCES HERE 
     this.singletons.add(new SimpleServiceImpl()); 
     this.singletons.add(new AuthenticationServiceImpl()); 
     this.singletons.add(new DenemeExceptionMapper()); //<<< -- HERE IS YOUR EXCEPTION MAPPER ! 
    } 

    public Set<Class<?>> getClasses() { 
     return this.empty; 
    } 

    public Set<Object> getSingletons() { 
     return this.singletons; 
    } 
}