Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

Discussion: Weblogic vs Tomcat

  1. #1
    Invité de passage
    Profil pro ybdev
    Inscrit en
    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

  2. #2
    Rédacteur
    Avatar de lunatix
    Homme Profil pro julien
    Architecte technique
    Inscrit en
    novembre 2002
    Messages
    1 946
    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 946
    Points : 3 072
    Points
    3 072

    Par défaut

    ca va etre null si le serveur genere une 304 (not modified)
    c'est peut etre normal en fait

  3. #3
    Invité de passage
    Profil pro ybdev
    Inscrit en
    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

    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

  4. #4
    Rédacteur
    Avatar de lunatix
    Homme Profil pro julien
    Architecte technique
    Inscrit en
    novembre 2002
    Messages
    1 946
    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 946
    Points : 3 072
    Points
    3 072

    Par défaut

    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

  5. #5
    Invité de passage
    Profil pro ybdev
    Inscrit en
    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

    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

  6. #6
    Membre du Club
    Inscrit en
    avril 2003
    Messages
    140
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : avril 2003
    Messages : 140
    Points : 59
    Points
    59

    Par défaut

    Les jars utilisés sont les mêmes de part et d'autre ?
    Et le JDK, même version ?
    Sébastien Bervoets

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •