IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tomcat et TomEE Java Discussion :

Etat HTTP 404 - Servlet n'est pas disponible.


Sujet :

Tomcat et TomEE Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 16
    Points : 8
    Points
    8
    Par défaut Etat HTTP 404 - Servlet n'est pas disponible.
    Bonjour:
    j'ai le message d'erreur suivant :"Etat HTTP 404 - Servlet DBTest n'est pas disponible." ça fait 2 jours ke je cherche sans resultat,
    le code du fichier DBTest
    -------DBTest---------------------
    package pac;

    import java.io.*;
    import java.sql.*;
    import javax.naming.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
    import javax.sql.*;

    public class DBTest extends HttpServlet {

    private DataSource ds; //la source de données
    Connection con=null;
    Statement s=null;
    ResultSet rs=null;

    public void init() throws ServletException {
    try {
    //récupération de la source de donnée
    Context initCtx = new InitialContext();
    Context envCtx=(Context)initCtx.lookup("java:comp/env");
    ds = (DataSource) envCtx.lookup("java:comp/env/jdbc/TestDB");
    } catch (Exception e) {
    throw new UnavailableException(e.getMessage());
    }
    }

    public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {
    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    out.println("<html><head></head>");
    out.println("<body>");

    try {

    //récupération de la Connection depuis le DataSource

    con = ds.getConnection();
    s = con.createStatement();
    rs = s.executeQuery("SELECT * FROM identifiant");
    while (rs.next()) {
    out.println(rs.getString(1) + " ");
    out.println(rs.getString(2) + "<br/>");
    out.println(rs.getString(3) + "<br>");
    }
    } catch (SQLException e) {
    response.sendError(500, "Ô Exception sur l'accès à la BDD " + e);
    }finally {
    if (rs != null)
    {
    try {
    rs.close();
    } catch (SQLException e) {}
    rs = null;
    }
    if (s != null) {
    try {
    s.close();
    } catch (SQLException e) {}
    s = null;
    }
    if (con != null) {
    try {
    con.close();
    } catch (SQLException e) {}
    con = null;
    }
    }
    out.println("</body>");
    out.println("</html>");
    out.close();
    }


    }

    celui de server.xml
    -----------server.xml---------------
    <Context path="/test" docBase="test" debug="5" reloadable="true" crossContext="true">

    <Resource
    name="jdbc/TestDB"
    auth="Container"
    type="javax.sql.DataSource"
    factory="org.apache.commons.dbcp.BasicDataSourceFactory"
    driverClassName="com.mysql.jdbc.Driver"
    url="jdbc:mysql://localhost:3306/Elipse?autoReconnect=true"
    username="said"
    password="said"/>
    </Context>


    et celui de web.xml
    ------------web.xml------------------------
    <display-name>TestTomcat</display-name>
    <servlet>
    <servlet-name>DBTest</servlet-name>
    <servlet-class>pac.DBTest</servlet-class>
    </servlet>
    <servlet>
    <servlet-name>Oups</servlet-name>
    <servlet-class>TestServlet</servlet-class>
    </servlet>
    <servlet>
    <servlet-name>servlet2</servlet-name>
    <servlet-class>servletTraitement</servlet-class>
    </servlet>
    <servlet-mapping>
    <servlet-name>DBTest</servlet-name>
    <url-pattern>/DBTest</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
    <servlet-name>Oups</servlet-name>
    <url-pattern>/Oups</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
    <servlet-name>servlet2</servlet-name>
    <url-pattern>/servlet2</url-pattern>
    </servlet-mapping>
    <Resource-ref>
    <description>reference a la ressource BDD pour le pool</description>
    <res-ref-name>jdbc/TestDB</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
    </Resource-ref>
    </web-app>
    sachant que j'ai d'autres servlets dans la même application et même BDD et ça fonctionne très bien, par contre tomcat ne lance pas la servlet en rapport avec le pool de connexion.
    j'ai crée le rep meta-inf sous webapps/test/ et mis le fichier context.xml dedans rien ne change, j'ai déplacé ce fichier sous conf/ rien non plus et maintenant j'ai mis le context dans server.xml idem.

    j'attend votre aide avec impatience.

    d'avance merci

  2. #2
    Membre à l'essai
    Homme Profil pro
    Consultant web
    Inscrit en
    Juillet 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2005
    Messages : 13
    Points : 19
    Points
    19
    Par défaut
    J'ai le même problème.
    Quand je lance tomcat sous eclipse avec un war dézippé, ca marche, mais quand je lance tomcat en ligne de commande avec un war non dézippé, ca ne fonctionne plus...

  3. #3
    Membre expérimenté Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Points : 1 639
    Points
    1 639
    Par défaut
    je ne suis pas sur mais je crois que le server.xml utilise par eclipse n est pas le meme que celui qui est utilise quand Tomcat est lance "seul".

  4. #4
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 16
    Points : 8
    Points
    8
    Par défaut
    pour ne pas 'inculper' un autre framware, je lance l'appli seulement sous Tomcat,
    et voilà je suis à mon troisième jour et je n'y arrive pas. je vais changer de version et je vais voir ...

  5. #5
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 16
    Points : 8
    Points
    8
    Par défaut
    je viens d'installer tomcat 6.0.9 j'ai lancé l'appli même problème, de plus j'ai
    mis DBTest.java sous la racine "webapps/test" c'est pareil; je me pose des questions ????

  6. #6
    Membre à l'essai
    Homme Profil pro
    Consultant web
    Inscrit en
    Juillet 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2005
    Messages : 13
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par willoi
    je ne suis pas sur mais je crois que le server.xml utilise par eclipse n est pas le meme que celui qui est utilise quand Tomcat est lance "seul".
    visiblement je n'en ai qu'un seul...

  7. #7
    Membre expérimenté Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Points : 1 639
    Points
    1 639
    Par défaut
    et ton log de Tomcat, c est quoi ?
    Et si tu vide, tout le contenu de la servlet, en gardant juste une ligne du style out.println("essai");
    Obtiens tu la meme chose ?

  8. #8
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Comment appels-tu la servlet (c'est une page qui le fait ou par l'url ) ?

    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Membre à l'essai
    Homme Profil pro
    Consultant web
    Inscrit en
    Juillet 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2005
    Messages : 13
    Points : 19
    Points
    19
    Par défaut
    la solution au problème est trouvée !
    Mon docbase dans la définition du contexte ne pointait pas vers mon war, mais toujours vers l'endroit ou je déploie habituellement mes sources...

    Merci pour votre aide !

  10. #10
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 16
    Points : 8
    Points
    8
    Par défaut
    alors là c'est mieux mais juste avec le code simple comme tu m'a demandé:
    --------------
    package pac;

    import java.io.*;
    import java.sql.*;
    import javax.naming.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
    import javax.sql.*;

    public class DBTest extends HttpServlet {



    public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {
    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    out.println("<html><head></head>");
    out.println("<body>");

    out.println("Bonjour juste un essai");

    out.println("</body>");
    out.println("</html>");
    out.close();
    }


    }
    --------------------------
    donc le problème ça viens d'où exactement JNDI, DataBase,....je ne sais pas et comment alors faire avec une DATABASE

  11. #11
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 16
    Points : 8
    Points
    8
    Par défaut
    comme je ne maitrise pas bcp le sujet est ce que mon Contexte dans server.xml et le web.xml sont bien définis,
    est ce que le fait d'imorte java.naming suffit pour activer JNDI ?
    voici le contenu de mon common.lib :commons-el, jasper-compiler, jasper-compiler-jdt, jasper-runtime, jmxri,j sp-api, mysql-connector-java-5.0.4-bin, naming-factory, naming-factory-dbcp, naming-ressources, servlet-api.
    tous ces fichiers sont de type .jar

    Merci

  12. #12
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 16
    Points : 8
    Points
    8
    Par défaut
    je viens de reprendre la servlet originale DBTest et de na garder dans la méthode doGet qu'un affichage simple, j'ai toujours le même problème.
    donc l'origine de l'erreur vient de la méthode init(): mais koi exactement je ne sais pas, au secours!!!!!!!!!!!!!!!!!!!!!!

  13. #13
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    J'ai un peu perdu le fil...
    Ton problème est toujours l'erreur 404 ?
    Si oui, j'en reviens à ma question :
    tu appelles ta servlet dans une page ou dans la barre de navigation ?

    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  14. #14
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 16
    Points : 8
    Points
    8
    Par défaut
    oui ta raison, puiske on est deux à poser deux problèmes différents;
    c moi qui a posé le problème de l'erreur 404, la servlet je la saisie par l'url:
    http://localhost:8080/test/DBTest.
    et comme j'ai expliqué ci-dessus, quand je vide la servlet de son contenu, sauf pour un affichage simple ça fonctionne mais avec le contenu de la la méthode init() ça coince.

    merci

  15. #15
    Membre expérimenté Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Points : 1 639
    Points
    1 639
    Par défaut
    Et si tu ecris le contenu de init a un autre endroit que se passe-t-il

  16. #16
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    C'est certain que si dans ta méthode init (on parle bien du code dans ton premier message ?) tu balances une exception, ça va coincer ferme...
    Comment veux-tu que la servlet s'initialise.

    Sinon, tu devrais utiliser la signature (mais ton problème ne vient pas de là)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public void init(ServletConfig config)
    {
       ...
    }
    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  17. #17
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 16
    Points : 8
    Points
    8
    Par défaut
    je viens de mettre init() après la méthode doGet, puis prendre le code de init() et le mettre à l'interieur de doGet et dans les deux cas toujours le même problème;
    par contre j'ai jeté un coup d'oeil sur le log catalina.log est j'ai remarqué qu'il y a des choses anormales et affiche l' erreur suivante java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSourceFactory.
    et voici le contenu de ce fichier :
    -----------------------------------------------------------------
    28 févr. 2007 13:52:14 org.apache.coyote.http11.Http11BaseProtocol init
    INFO: Initialisation de Coyote HTTP/1.1 sur http-8080
    28 févr. 2007 13:52:14 org.apache.catalina.startup.Catalina load
    INFO: Initialization processed in 625 ms
    28 févr. 2007 13:52:14 org.apache.catalina.core.StandardService start
    INFO: Démarrage du service Catalina
    28 févr. 2007 13:52:14 org.apache.catalina.core.StandardEngine start
    INFO: Starting Servlet Engine: Apache Tomcat/5.5.20
    28 févr. 2007 13:52:14 org.apache.catalina.core.StandardHost start
    INFO: XML validation disabled
    28 févr. 2007 13:52:15 org.apache.catalina.core.NamingContextListener addResource
    ATTENTION: Failed to register in JMX: javax.naming.NamingException: Could not load resource factory class [Root exception is java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSourceFactory]
    28 févr. 2007 13:52:15 org.apache.catalina.startup.HostConfig deployWAR
    INFO: Déploiement de l'archive admin.war de l'application web
    28 févr. 2007 13:52:16 org.apache.coyote.http11.Http11BaseProtocol start
    INFO: Démarrage de Coyote HTTP/1.1 sur http-8080
    28 févr. 2007 13:52:16 org.apache.jk.common.ChannelSocket init
    INFO: JK: ajp13 listening on /0.0.0.0:8009
    28 févr. 2007 13:52:16 org.apache.jk.server.JkMain start
    INFO: Jk running ID=0 time=0/16 config=null
    28 févr. 2007 13:52:16 org.apache.catalina.storeconfig.StoreLoader load
    INFO: Find registry server-registry.xml at classpath resource
    28 févr. 2007 13:52:16 org.apache.catalina.startup.Catalina start
    INFO: Server startup in 1594 ms
    28 févr. 2007 13:53:15 org.apache.coyote.http11.Http11BaseProtocol pause
    INFO: Suspension de Coyote HTTP/1.1 sur http-8080
    28 févr. 2007 13:53:16 org.apache.catalina.core.StandardService stop
    INFO: Arrêt du service Catalina
    28 févr. 2007 13:53:16 org.apache.coyote.http11.Http11BaseProtocol destroy
    INFO: Arrêt de Coyote HTTP/1.1 sur http-8080
    28 févr. 2007 13:53:16 org.apache.catalina.core.AprLifecycleListener lifecycleEvent
    INFO: Failed shutdown of Apache Portable Runtime
    28 févr. 2007 13:53:28 org.apache.catalina.core.AprLifecycleListener lifecycleEvent
    INFO: The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Apache Software Foundation\Tomcat 5.5\bin;.;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\Java\jdk1.6.0\bin
    28 févr. 2007 13:53:28 org.apache.coyote.http11.Http11BaseProtocol init
    INFO: Initialisation de Coyote HTTP/1.1 sur http-8080
    28 févr. 2007 13:53:28 org.apache.catalina.startup.Catalina load
    INFO: Initialization processed in 625 ms
    28 févr. 2007 13:53:28 org.apache.catalina.core.StandardService start
    INFO: Démarrage du service Catalina
    28 févr. 2007 13:53:28 org.apache.catalina.core.StandardEngine start
    INFO: Starting Servlet Engine: Apache Tomcat/5.5.20
    28 févr. 2007 13:53:28 org.apache.catalina.core.StandardHost start
    INFO: XML validation disabled
    28 févr. 2007 13:53:28 org.apache.catalina.core.NamingContextListener addResource
    ATTENTION: Failed to register in JMX: javax.naming.NamingException: Could not load resource factory class [Root exception is java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSourceFactory]
    28 févr. 2007 13:53:28 org.apache.catalina.startup.HostConfig deployWAR
    INFO: Déploiement de l'archive admin.war de l'application web
    28 févr. 2007 13:53:29 org.apache.coyote.http11.Http11BaseProtocol start
    INFO: Démarrage de Coyote HTTP/1.1 sur http-8080
    28 févr. 2007 13:53:29 org.apache.jk.common.ChannelSocket init
    INFO: JK: ajp13 listening on /0.0.0.0:8009
    28 févr. 2007 13:53:29 org.apache.jk.server.JkMain start
    INFO: Jk running ID=0 time=0/32 config=null
    28 févr. 2007 13:53:29 org.apache.catalina.storeconfig.StoreLoader load
    INFO: Find registry server-registry.xml at classpath resource
    28 févr. 2007 13:53:29 org.apache.catalina.startup.Catalina start
    INFO: Server startup in 1546 ms
    --------------------------------------------------------------------

  18. #18
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 16
    Points : 8
    Points
    8
    Par défaut
    oui tu as raison le problème vient d'autres choses, je viens de changer la signature de init() et c'est tjr pareil

  19. #19
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Ce doit être un problème de jar. (http://jakarta.apache.org/site/downl...mmons-dbcp.cgi)
    Il faudrait le mettre dans le répertoire de ton serveur (je pense dans shared/lib)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  20. #20
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 16
    Points : 8
    Points
    8
    Par défaut
    Ouf je viens de retirer simplement factory="org.apache.commons.dbcp.BasicDataSourceFactory"
    du context dans le fichier server.xml et ça passe,

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. HTTP 404 - Servlet action n'est pas disponible
    Par benoit6315 dans le forum Struts 1
    Réponses: 6
    Dernier message: 28/04/2009, 01h51
  2. Etat http 404:la ressource demandé n'est pas disponible
    Par amine_smi dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 04/04/2009, 21h07
  3. Réponses: 2
    Dernier message: 22/11/2006, 18h12
  4. Etat HTTP 404 - Servlet action n'est pas disponible.???
    Par iftolotfi dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 05/05/2006, 15h44
  5. [Tomcat] [Eclipse] : Servlet n'est pas disponible
    Par mmed dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 13/01/2005, 12h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo