Probleme de SERVLET

Probleme de SERVLET - Java - Programmation

Marsh Posté le 19-02-2007 à 16:55:13    

Salut,
 
Voila j'ai un ptit soucis, je créer un servlet qui dois ètre appelé par differente application. Donc je voudrais que chaque application appel la mème classe avec un nom de servlet different, afin que chaque site est sa propre config. Donc je me suis dis que je pourrais peux ètre faire ça avec le fichier web.xml de mon  context : pour cela dans ce fichier j'ai creer le fichier suivant :  
 
 
 

Code :
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app>
  3. <display-name>pay_name</display-name>
  4. <servlet>
  5.  <description>une description</description>
  6.  <display-name>servlet1</display-name>
  7.  <servlet-name>servlet1</servlet-name>
  8.  <servlet-class>servlet_class</servlet-class>
  9.  <init-param>
  10.   <param-name>param1</param-name>
  11.   <param-value>value2</param-value>
  12.  </init-param>
  13.  <init-param>
  14.   <param-name>param2</param-name>
  15.   <param-value>value2</param-value>
  16.  </init-param>
  17. </servlet>
  18. <servlet>
  19.  <description></description>
  20.  <display-name>servlet2</display-name>
  21.  <servlet-name>servlet2</servlet-name>
  22.  <servlet-class>servlet_class</servlet-class>
  23.  <init-param>
  24.   <param-name>param1</param-name>
  25.   <param-value>value3</param-value>
  26.  </init-param>
  27.  <init-param>
  28.   <param-name>param2</param-name>
  29.   <param-value>value3</param-value>
  30.  </init-param>
  31. </servlet>
  32. <servlet-mapping>
  33.  <servlet-name>servlet1</servlet-name>
  34.  <url-pattern>/servlet_class</url-pattern>
  35. </servlet-mapping>
  36. <servlet-mapping>
  37.  <servlet-name>servlet2</servlet-name>
  38.  <url-pattern>/servlet_class</url-pattern>
  39. </servlet-mapping>
  40. <welcome-file-list>
  41.  <welcome-file>index.html</welcome-file>
  42. </welcome-file-list>
  43. </web-app>


 
Donc appli 1 appel  : https://host:port/pay_name/servlet1
Donc appli 2 appel  : https://host:port/pay_name/servlet2
 
Mon probleme c'est que quand j'appelle le servlet2 ben j'ai une erreur 404 :
 
Etat HTTP 404 -  /pay_name/servlet2
type Rapport d'état
message /pay_name/servlet2
description La ressource demandée (/pay_name/servlet2) n'est pas disponible.
 
 
J'espère que j'ai ecris clairement.
Merci de votre aide.


Message édité par DEns91 le 19-02-2007 à 16:57:41
Reply

Marsh Posté le 19-02-2007 à 16:55:13   

Reply

Marsh Posté le 20-02-2007 à 14:29:22    

Tes url-patern ne sont pas bons
 

Code :
  1. <servlet-mapping>
  2.   <servlet-name>servlet1</servlet-name>
  3.   <url-pattern>/servlet1</url-pattern>
  4. </servlet-mapping>
  5. <servlet-mapping>
  6.   <servlet-name>servlet2</servlet-name>
  7.   <url-pattern>/servlet2</url-pattern>
  8. </servlet-mapping>

Reply

Marsh Posté le 22-02-2007 à 09:49:35    

Bonjour,  
ça fait deux jours que je cherche une solution à ce genre de problème,
je le même message d'erreur  
voici le code de ma servlet :
---------- DBTest.java------------------
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;
 
 protected 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 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" );
   
   //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);
  }catch (Exception e) {
   throw new UnavailableException(e.getMessage());
  }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();
 }
 
   
}
 
le code 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="nom"  
  password="motdepasse"/>  
</Context>
 
et le fichier web.xml:
------------web.xml-----------------------
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">  
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    version="2.4">
 <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 crée le rep meta-inf sous la racine et mis le fichier context.xml dedans puis le mettre sous le rep conf et j'ai toujours le même problème;
 
j'attend votre aide merci d'avance.

Reply

Marsh Posté le 22-02-2007 à 16:58:48    

Bidem a écrit :

Tes url-patern ne sont pas bons
 

Code :
  1. <servlet-mapping>
  2.   <servlet-name>servlet1</servlet-name>
  3.   <url-pattern>/servlet1</url-pattern>
  4. </servlet-mapping>
  5. <servlet-mapping>
  6.   <servlet-name>servlet2</servlet-name>
  7.   <url-pattern>/servlet2</url-pattern>
  8. </servlet-mapping>



 
Merci pour ta reponse, mais apparament c'est pas ca. ca ne fonctionne toujours pas. Vu que j'avais très peu de temps j'ai régler mon probleme en passant les valeurs en pramètre.  
Dès que j'ai 5 minutes je me repenche sur ce probleme.

Reply

Marsh Posté le 22-02-2007 à 17:04:46    

C'est parce que tu n'utilises pas les bonnes servlets...

Spoiler :

http://media.houra.fr/ART-IMG-STD/02/23/4015400122302-2.jpg


...hygiéniques


Message édité par _darkalt3_ le 22-02-2007 à 17:05:22

---------------
Töp of the plöp
Reply

Marsh Posté le 28-02-2007 à 10:35:50    

si, j'utilise les bonnes, et la preuve quand je vide la servlet DBTest et je ne laise q'un simple affichage comme out.println("bonjour" );
ça passe contrairement à l'origine.

Reply

Marsh Posté le 01-03-2007 à 16:58:34    

Citation :

package pac;
...
public class DBTest extends HttpServlet {
...


 

Citation :

<servlet>  
  <servlet-name>Oups</servlet-name>  
  <servlet-class>pac.TestServlet</servlet-class>  
 </servlet>


Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed