2013-01-15 61 views
2

誰能告訴我如何在JBoss AS 7中定製http代碼和reasonphrase?在JBoss AS 7中自定義HTTP代碼和錯誤消息

基本上我有一個REST Web服務,它返回一個非標準狀態代碼「499」與reasonphrase「應用程序錯誤」

standalone.xml,我設置了org.apache.coyote.Constants.USE_CUSTOM_STATUS_MSG_IN_HEADERtruesystemproperties下,但仍然覆蓋HTTP錯誤信息。

+0

不要。使用未註冊的狀態碼或依賴於原因短語是一個糟糕的主意。 –

+0

在所有情況下都不是這樣。他們可能有一個很好的理由 - 例如。代理服務器會在路上的某個地方使用其他HTTP標頭。 –

回答

0

我假定REST服務使用RestEasy來解釋。

即提供使用注射@Context一個HTTP響應對象的一個​​很好的功能:

的@Context註釋允許你注入的javax.ws.rs.core.HttpHeaders,javax.ws.rs實例。 core.UriInfo,javax.ws.rs.core.Request,javax.servlet.HttpServletRequest,javax.servlet.HttpServletResponse,javax.servlet.ServletConfig,javax.servlet.ServletContext和javax.ws.rs.core.SecurityContext對象。

@Path("/") 
public class MyService { 
    @Context org.jboss.resteasy.spi.HttpResponse response; 

    @GET @Path("/") public void myMethod(){ 
     response.sendError(499, "The file was censored by NSA.") 
    } 
} 

但是,也許你還是考慮使用專有的HTTP標頭:

 response.getOutputHeaders().putSingle("X-MyApp-Error", 
       "499 Our server is down and admin is on holiday. Mañana."); 
1

似乎有JBoss文檔的錯誤,正確的屬性名稱是:

org.apache.coyote.USE_CUSTOM_STATUS_MSG_IN_HEADER 

所以在獨立你應該有這樣的事情:

<system-properties> 
    <property name="org.apache.coyote.USE_CUSTOM_STATUS_MSG_IN_HEADER" value="true"/> 
</system-properties> 
+0

給這個人一個COOKIE!這絕對有效! –

相關問題