0

我在 Tomcat 中部署了一个过滤器,它记录所有 servlet 的 URL 和请求参数。现在我想在 Websphere 应用程序服务器中部署相同的内容。1. 将我的过滤器类文件复制到哪里?2. web.xml 的位置,我必须在其中输入过滤器类部署描述符 xml 标记。3. 过滤器类将记录 URL 和请求参数的日志文件。

下面是我的过滤器类的代码。

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");

  }
}
4

2 回答 2

2

在 WebSphere 中,您应该真正部署整个 EAR 文件。部署后不要尝试修改部署描述符(web.xml 等)。更改部署描述符后,您应该构建并重新部署。相信我,其他一切都行不通,或者至少会在操作中产生麻烦。

默认情况下,WebSphere 登录<profilepath>/logs/<servername>SystemOut.logtrace.txt。日志记录配置取决于您的环境。

于 2011-07-23T06:50:08.123 回答
0
  1. 您的过滤器类文件通常应该与其他应用程序类一起部署到您的 WAR 文件中。如果您想将此过滤器应用于多个应用程序而不部署到每个应用程序,请参阅这篇关于使用通用应用程序文件的文章。
  2. 与 Tomcat 不同,WebSphere 没有共享/全局 web.xml,因此您必须在每个 WAR 的 web.xml 中配置过滤器。
于 2011-07-25T14:58:21.237 回答