Bonjour à tous,

Depuis un moment je galère à faire exécuter une application "très simple" sous weblogic alors qu'elle marche à merveille sous tomcat.

Il s'agit d'une application qui Web qui utilise un filter que j'ai développé moi même pour purifier HTML en sortie.

Voici le code du filter:


============== Class : SimpleFilter
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package mp.mpfilter.html;
 
import java.io.CharArrayWriter;
import java.io.IOException;
import java.io.PrintWriter;
 
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletResponseWrapper;
 
public class SimpleFilter implements Filter {
  protected FilterConfig config;
 
  public void init(FilterConfig config) throws ServletException {
    this.config = config;
  }
 
  public void destroy() {
  }
 
  public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
      throws ServletException, IOException {
 
    ServletResponse newResponse = response;
    HttpServletRequest rq = (HttpServletRequest) request;
 
 
      newResponse = new CharResponseWrapper((HttpServletResponse) response);
 
    chain.doFilter(request, newResponse);
 
 
      String text = newResponse.toString();
      System.out.println("from filter: " + text);
      response.getWriter().write("filter :" + text);
      if (text != null) {
        text = text.toUpperCase();
        response.getWriter().write(text);
      }
 
  }
}
============== Class : CharResponseWrapper

p
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
ackage mp.mpfilter.html;
 
import javax.servlet.*;
import javax.servlet.http.HttpServletResponseWrapper;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
 
class CharResponseWrapper extends HttpServletResponseWrapper {
  protected CharArrayWriter charWriter;
 
  protected PrintWriter writer;
 
  protected boolean getOutputStreamCalled;
 
  protected boolean getWriterCalled;
 
  public CharResponseWrapper(HttpServletResponse response) {
    super(response);
    charWriter = new CharArrayWriter();
  }
 
  public ServletOutputStream getOutputStream() throws IOException {
    if (getWriterCalled) {
      throw new IllegalStateException("getWriter already called");
    }
 
    getOutputStreamCalled = true;
    return super.getOutputStream();
  }
 
  public PrintWriter getWriter() throws IOException {
    if (writer != null) {
      return writer;
    }
    if (getOutputStreamCalled) {
      throw new IllegalStateException("getOutputStream already called");
    }
    getWriterCalled = true;
    writer = new PrintWriter(charWriter);
    return writer;
  }
 
  public String toString() {
    String s = null;
 
    if (writer != null) {
      s = charWriter.toString();
    }
    return s;
  }
}
============ POM (les jar utilisés) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
  <dependency>
            <groupId>tomcat</groupId>
            <artifactId>servlet-api</artifactId>
            <version>5.5.23</version>
        </dependency>
        <dependency>
            <groupId>commons-pool</groupId>
            <artifactId>commons-pool</artifactId>
            <version>1.4</version>
        </dependency>
        <dependency>
            <groupId>commons-configuration</groupId>
            <artifactId>commons-configuration</artifactId>
            <version>1.6</version>
        </dependency>



Le problème est dans cette instruction "text = newResponse.toString();" car sous tomcat elle retourne HTML affiché dans le navigateur.

Malheureusement, cette instruction retourne la valeur "null" sous weblogic?

Quelqu'un peut-il m'aider? Je serai très reconnaissant.


YBDEV