2014-05-25 69 views
3
public class NotAuthorizedException extends WebApplicationException { 
    public NotAuthorizedException(String message) { 
      super(Response.status(Response.Status.BAD_REQUEST).entity(message).type(MediaType.TEXT_PLAIN).build()); 
    } 
} 

我的資源:GAE不接受新澤西州的WebApplicationException

public class MyResource{ 
@GET 
public Book getBook(){ 
    ... 
    throw new NotAuthorizedException("my exception"); 
} 
} 

在GAE開發服務器,我的客戶端接收my exception,這是我所期望的,但在生產模式下,它返回:

<html><head> 
<meta http-equiv="content-type" content="text/html;charset=utf-8"> 
<title>400 Bad Request</title> 
</head> 
<body text=#000000 bgcolor=#ffffff> 
<h1>Error: Bad Request</h1> 
</body></html> 

這似乎是GAE默認的400錯誤響應。

在此先感謝。

回答

0

這個問題已經被@Takahiko川崎回答,但只是completness以下兩種可選方法來設置提到新澤西屬性:

編程:

new ResourceConfig() 
     .property(ServerProperties.RESPONSE_SET_STATUS_OVER_SEND_ERROR, true); 

或者web.xml中:

<servlet> 
    <servlet-name>API</servlet-name> 
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> 
    .... 
    <init-param> 
    <param-name>jersey.config.server.response.setStatusOverSendError</param-name> 
    <param-value>true</param-value> 
    </init-param> 
</servlet>