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
============== Class : CharResponseWrapper
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); } } }
p============ 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
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; } }
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
Partager