2013-05-17 36 views
0

我们正在尝试获取服务器名称,会话ID浏览器信息...以将信息保存在MDC中以进行日志记录。如何将监听器添加到requestcycle onbegin请求中?

为此,我们试图在IRequestCycleListeneronBeginRequest()RequestCycle中添加一个收听者。 我添加了一个类,如下所示:

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

现在在哪里添加监听器,得到上述信息?

回答

3

在您的班级中,扩展WebApplicationAuthenticatedWebApplication中的init()函数。

您需要获取请求周期侦听器并将新侦听器添加到列表中。

所以,如果你想输出请求的URI你会做这样的事情:

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()); 
     } 
    }; 
} 
); 

获取浏览器的信息几乎可以在任何地方进行,不一定只是在请求中。

String userAgent = WebSession.get().getClientInfo().getUserAgent();