2013-05-17 4 views
0

우리는 서버 이름, 세션 ID 브라우저 정보를 얻기 위해 로깅을 위해 MDC에 정보를 보관하려고합니다.requestcycle 요청에 리스너를 추가하는 방법은 무엇입니까?

이 경우 의 onBeginRequest()에있는 청취자를 IRequestCycleListener으로 추가하려고합니다.

이제
public class RequestRListener implements IRequestCycleListener 
{ 
    @Override 
    public void onBeginRequest(RequestCycle cycle) 
    { 
     //TODO 
    } 
} 

경우 위에서 언급 한 정보를 얻을 수있는 리스너를 추가하기 위해 다음과 같이 나는 클래스를 추가 한?

답변

3

WebApplication 또는 을 확장하는 클래스에서 init() 함수에 있습니다.

요청주기 수신기를 가져 와서 새 수신기를 목록에 추가해야합니다. 반드시 단지 요청에, 거의 모든 곳에서 수행 할 수 있습니다

getRequestCycleListeners().add( 
new AbstractRequestCycleListener() 
{  
    public void onBeginRequest(RequestCycle cycle) 
    {     
     if(cycle.getRequest().getContainerRequest() instanceof HttpServletRequest) 
     { 
      HttpServletRequest containerRequest = 
       (HttpServletRequest)cycle.getRequest().getContainerRequest(); 
      System.out.println("URI="+containerRequest.getRequestURI()); 
     } 
    }; 
} 
); 

브라우저 정보를 얻기 : 당신은 출력하려는 ​​경우

그래서, 요청 된 URI는이 같은 일을 할 것입니다.

String userAgent = WebSession.get().getClientInfo().getUserAgent(); 
관련 문제