2011-07-23 52 views
0

我在Tomcat中部署了一個過濾器,它記錄所有servlet的URL和請求參數。 現在我想在Websphere Application Server中部署它們。 1.在哪裏複製我的過濾器類文件? 2.我必須在其中輸入Filter類部署描述符xml標籤的web.xml的位置。 3.過濾器類將記錄URL和請求參數的日誌文件。Websphere Application Server:servlet部署描述符的web.xml位置和過濾器servlet將記錄的日誌文件位置

以下是我的Filter類的代碼。

import java.io.*; 
import javax.servlet.*; 
import javax.servlet.http.*; 
import java.text.SimpleDateFormat; 

import java.util.Date; 

public class T24RequestTime implements Filter { 

    private FilterConfig config = null; 

    Date dt = new Date(); 

    public void init(FilterConfig config) throws ServletException { 

    this.config = config; 

    } 

    public void destroy() { 

    config = null; 

    } 

    public void doFilter(ServletRequest request, ServletResponse response, 

        FilterChain chain) throws IOException, ServletException { 

    long before = System.currentTimeMillis(); 

    chain.doFilter(request, response); 

    long after = System.currentTimeMillis(); 

    SimpleDateFormat dateFormat = new SimpleDateFormat("[dd/MMM/yyyy:HH:mm:ss]"); 

    String endDate = dateFormat.format(new Date());  

    String name = ""; 

    if (request instanceof HttpServletRequest) { 

     name = ((HttpServletRequest)request).getRequestURI(); 

    } 

    config.getServletContext().log("T24: !Date-Time: !"+endDate+ "! Total Elapsed Time: !" +   (after - before) + "!ms!"+"! Company: !"+((HttpServletRequest)request).getParameter("companyId")+"! User: !"+((HttpServletRequest)request).getParameter("user")+"! Version: !"+((HttpServletRequest)request).getParameter("version")+"! Application: !"+((HttpServletRequest)request).getParameter("application")+"! Routine Name: !"+((HttpServletRequest)request).getParameter("routineName")+"! Timing: !"+((HttpServletRequest)request).getParameter("timing")+"! URL: !"+ name); 

    System.out.println("fsfsfsd"); 

    } 
} 

回答

2

在WebSphere中,您應該真正部署整個EAR文件。部署後不要嘗試修改部署描述符(web.xml等)。更改部署描述符後,您應該構建並重新部署。相信我,其他一切都不會起作用,或者至少會在操作中產生麻煩。

每個默認WebSphere日誌記錄到<profilepath>/logs/<servername>SystemOut.logtrace.txt。記錄配置取決於您的環境。

+0

順便說一句:你應該看看'StringBuilder'來創建你的日誌語句。 – home

0
  1. 您的過濾器類文件通常應該與其他應用程序類一起部署到WAR文件中。如果您想將此過濾器應用於多個應用程序而無需部署到每個應用程序,請參閱this article on using common application files
  2. 與Tomcat不同,WebSphere沒有共享/全局web.xml,因此您必須在每個WAR的web.xml中配置過濾器。