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
Partager