2012-03-14 5 views
6

RESTeasyインターフェイスからHTTPエラーを返すことは可能ですか?私は現在、このためチェーンのWebフィルタを使用していますが、私はそれがインターフェースから直接可能であるかどうかを知りたい...RESTeasyインターフェイスからのHTTPエラーを返します

例はsudo-コード:

@Path("/foo") 
public class FooBar { 

    @GET 
    @Path("/bar") 
    @Produces("application/json") 
    public Object testMethod(@HeaderParam("var_1") @DefaultValue("") String var1, 
          @HeaderParam("var_2") @DefaultValue("") String var2 { 

     if (var1.equals(var2)) { 
      return "All Good"; 
     } else { 
      return HTTP error 403; 
     } 
    } 
} 

答えて

18

は解決策を発見し、それは非常に簡単です:

throw new WebApplicationException(); 

ので:また、あなたの方法と目の中にJavaの例外を投げることができる

@Path("/foo") 
public class FooBar { 

    @GET 
    @Path("/bar") 
    @Produces("application/json") 
    public Object testMethod(@HeaderParam("var_1") @DefaultValue("") String var1, 
          @HeaderParam("var_2") @DefaultValue("") String var2 { 

     if (var1.equals(var2)) { 
      return "All Good"; 
     } else { 
      throw new WebApplicationException(HttpURLConnection.HTTP_FORBIDDEN); 
     } 
    } 
} 
0

戻りjavax.ws.rs.core.Responseが応答コードを設定するには、次のブログでは、より詳細、特にステップ#2を持っています。

import javax.ws.rs.core.Response; 

@Path("/foo") 
public class FooBar { 

    @GET 
    @Path("/bar") 
    @Produces("application/json") 
    public Response testMethod(@HeaderParam("var_1") @DefaultValue("") String var1, 
          @HeaderParam("var_2") @DefaultValue("") String var2 { 

     if (var1.equals(var2)) { 
      return Response.ok("All Good").build(); 
     } else { 
      return Response.status(Response.Status.FORBIDDEN).entity("Sorry").build() 
     } 
    } 
} 

これにより、例外に関連するスタックトレースが保存されます。

関連する問題