Сервер приложений Websphere: расположение web.xml для дескриптора развертывания сервлета и расположение файла журнала, куда будет записываться сервлет фильтра - PullRequest
0 голосов
/ 23 июля 2011

Я развернул фильтр в Tomcat, который регистрирует URL-адреса и параметр запроса для всех сервлетов.Теперь я хочу развернуть то же самое на сервере приложений Websphere.1. Где скопировать мой файл класса фильтра?2. Расположение файла web.xml, в котором я должен ввести теги XML дескриптора развертывания класса Filter.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");

  }
}

Ответы [ 2 ]

2 голосов
/ 23 июля 2011

В WebSphere вы действительно должны развернуть весь файл EAR. Не пытайтесь изменить дескрипторы развертывания (web.xml и т. Д.) После развертывания. После изменения дескриптора развертывания вы должны создать и повторно развернуть. Поверьте мне, все остальное не будет работать или, по крайней мере, создавать проблемы при работе.

По умолчанию WebSphere регистрирует <profilepath>/logs/<servername> в SystemOut.log или trace.txt. Конфигурация ведения журнала зависит от вашей среды.

0 голосов
/ 25 июля 2011
  1. Ваш файл класса фильтра обычно должен быть развернут в вашем файле WAR вместе с другими классами приложения.Если вы хотите применить этот фильтр к нескольким приложениям без их развертывания, см. эту статью об использовании общих файлов приложений .
  2. В отличие от Tomcat, WebSphere не имеет общей / глобальной сети.xml, поэтому вам нужно будет настроить фильтр в каждом файле WAR web.xml.
...