Précédent   Forum du club des développeurs et IT Pro > Java > Serveurs, conteneurs, et Java EE > Weblogic
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 10/02/2011, 17h32   #1
ybdev
Invité de passage
 
ybdev
Inscription : février 2011
Messages : 5
Détails du profil
Informations personnelles :
Nom : ybdev

Informations forums :
Inscription : février 2011
Messages : 5
Points : 2
Points : 2
Par défaut Weblogic vs Tomcat

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 :
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 :
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 :
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
ybdev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2011, 23h08   #2
lunatix
Rédacteur/Modérateur
 
Avatar de lunatix
 
Homme julien
Architecte technique
Inscription : novembre 2002
Messages : 1 908
Détails du profil
Informations personnelles :
Nom : Homme julien
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Architecte technique

Informations forums :
Inscription : novembre 2002
Messages : 1 908
Points : 3 318
Points : 3 318
Envoyer un message via ICQ à lunatix Envoyer un message via AIM à lunatix Envoyer un message via MSN à lunatix
ca va etre null si le serveur genere une 304 (not modified)
c'est peut etre normal en fait
__________________
Blog blog = new MyBlog();
lunatix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2011, 14h31   #3
ybdev
Invité de passage
 
ybdev
Inscription : février 2011
Messages : 5
Détails du profil
Informations personnelles :
Nom : ybdev

Informations forums :
Inscription : février 2011
Messages : 5
Points : 2
Points : 2
Merci, oui, mais ça m'aide en rien.

En fait, il y a aucune erreur affichée dans weblogic! Car le contenu est bien affiché dans le navigateur. Par contre comme je l'ai expliqué c'est la dite instruction qui retourne un contenu différent. dans tomcat elle rencoit le contenu html affiché, mais dans weblogic "null".

Il se peut que c'est la version du JVM, dans tomcat c'est Sun Java 6 par contre dans weblogic c'est la jirokit 27.

Enfin je n'ai pas trouvé la solution...

Merci c'est une personne pourra m'orienter ...

Bien cordialement
ybdev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 00h28   #4
lunatix
Rédacteur/Modérateur
 
Avatar de lunatix
 
Homme julien
Architecte technique
Inscription : novembre 2002
Messages : 1 908
Détails du profil
Informations personnelles :
Nom : Homme julien
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Architecte technique

Informations forums :
Inscription : novembre 2002
Messages : 1 908
Points : 3 318
Points : 3 318
Envoyer un message via ICQ à lunatix Envoyer un message via AIM à lunatix Envoyer un message via MSN à lunatix
et comme je te dis, ca peut etre null parce que le serveur renvoi 304 et pas 200. (c'est tout a fait normal). Et tu peux tout a fait avoir une difference de comportement entre les deu serveurs.

il faut que tu verifies que sous weblo, tu forces bien le refresh (shift reload) de la page.

De maniere générale, il faut traiter le cas text ==null car il est tout a fait possible et normal
__________________
Blog blog = new MyBlog();
lunatix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 18h08   #5
ybdev
Invité de passage
 
ybdev
Inscription : février 2011
Messages : 5
Détails du profil
Informations personnelles :
Nom : ybdev

Informations forums :
Inscription : février 2011
Messages : 5
Points : 2
Points : 2
D'une manière générale, et d'après votre réponse, une application qui exploite un filtre très simple fonctionne correctement sous tomcat alors qu'elle ne fonctionne pas sous weblogic parait normal?

En fait, ce que je voudrait, c'est avoir le même résultat que ce soir sous tomcat ou weblogic?

Logiquement, une application WAR simple ne faisant pas appel eu EJB doit fonctionner sous tomcat et weblogic.

Je vous remercie pour votre aide, mais quelqu'un aurait la gentillesse de tester le code, je peux vous l'envoyer par mail si vous le souhaitiez?

voici mon mail : yk_bey@hotmail.com

Bien cordialement
ybdev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2011, 09h10   #6
nighma
Membre du Club
 
Inscription : avril 2003
Messages : 140
Détails du profil
Informations personnelles :
Âge : 36

Informations forums :
Inscription : avril 2003
Messages : 140
Points : 61
Points : 61
Envoyer un message via MSN à nighma Envoyer un message via Skype™ à nighma
Les jars utilisés sont les mêmes de part et d'autre ?
Et le JDK, même version ?
__________________
Sébastien Bervoets
nighma est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 18h19.


 
 
 
 
Partenaires

Hébergement Web