2013-01-15 3 views
2

JBoss AS 7에서 http 코드 및 reasonphrase를 사용자 정의 할 수있는 방법을 알려주는 사람이 있습니까? JBoss AS 7의 HTTP 코드 및 오류 메시지 사용자 정의

는 기본적으로 나는 systemproperties에서 trueorg.apache.coyote.Constants.USE_CUSTOM_STATUS_MSG_IN_HEADER을 설정 standalone.xml에서 reasonphrase '응용 프로그램 오류'

와 비표준 상태 코드 '499'을 반환하는 REST의 웹 서비스가 있지만, AS 여전히 HTTP 오류 메시지를 무시합니다.

+0

하지 마십시오. 등록되지 않은 상태 코드를 사용하거나 이유 구문에 의존하는 것은 나쁜 아이디어입니다. –

+0

모든 경우에 해당되는 것은 아닙니다. 그들은 그것을위한 좋은 이유가 있을지도 모른다 - 예를 들면. 프록시는 다른 HTTP 헤더를 어딘가에서 먹는다. –

답변

0

RestEasy를 사용하여 REST 서비스를 해석한다고 가정합니다.

@Context 주석은 당신이 javax.ws.rs.core.HttpHeaders, javax.ws.rs의 인스턴스를 주입 할 수 있습니다 : @Context를 사용하여 HTTP 응답 객체를 주입하는 좋은 기능을 제공

. 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

이 남자에게 식기를 제공하십시오! 이것은 절대적으로 효과가 있습니다! –