[tomcat 5][datasource][mysql] Problème avec l'exemple de base... - Java - Programmation
Marsh Posté le 24-08-2004 à 14:42:41
Ton lien c'est pour Tomcat 4 et je crois que la configuration n'est pas toute à fait la même pour Tomcat 5
http://jakarta.apache.org/tomcat/t [...] howto.html
Marsh Posté le 24-08-2004 à 15:24:43
Effectivement je ne me basais pas sur le bon exemple. J'ai fais les modifications nécessaires pour coller à la version 5 de tomcat et j'obtiens la même erreur.
L'exception est levée à l'instruction Connection con = ds.getConnection()
Marsh Posté le 24-08-2004 à 16:20:25
ton ds doit être null non?
pour ma part j'aurai fais comme ça
Code :
|
Marsh Posté le 25-08-2004 à 09:13:29
En fait mon ds n'est pas nul, car l'exception levé à l'instruction Connection con = ds.getConnection(); serait 'Null pointer Exception'.
J'ai tout de même essayé ta solution, mais j'obtiens la même levé d'exception que précedemment...
Pour faire avancer un peu les choses, j'utilise le driver "mysql-connector-java-3.0.14-production-bin.jar" que j'ai mis dans le repertoire common/lib de TOMCAT. De plus, je parviens à faire des accès à la base de données sans passer par le Datasource( à l'ancienne ).
Je crois que mon problème ne vient pas du code de la servlet mais plutôt des fichiers xml.
Serveur.xml (le nouveau )
Code :
|
et web.xml
Code :
|
Marsh Posté le 25-08-2004 à 14:22:15
J'ai comparé par rapport à mes fichiers de conf, y'a rien de choquant ; j'ai juste pas le même driver mysql que toi (enfin le nom du fichier jar).
T'as regardé dans les logs de Tomcat si t'as qqch?
Marsh Posté le 25-08-2004 à 14:35:03
Le pire, c'est que j'ai l'impression que ça peut venir d'une erreur bête du style jar manquant ou point virgule oublié...
En tout cas pour le moment, ça prend le chemin d'un problème insoluble!!
Marsh Posté le 27-08-2004 à 14:21:52
je ne peux pas t'aider pour ton pbm, mais quel est l'intérêt d'utiliser le pool de connexion plutôt que le driver JDBC (ce que j'ai déjà expérimenté)
Marsh Posté le 27-08-2004 à 15:04:10
frabill a écrit : je ne peux pas t'aider pour ton pbm, mais quel est l'intérêt d'utiliser le pool de connexion plutôt que le driver JDBC (ce que j'ai déjà expérimenté) |
Le gros intérêt est de pouvoir gérer un grand nombre de connexions simultanées et donc une plus grosse charge.
Marsh Posté le 02-09-2004 à 09:03:54
L'idéal serait que quelqu'un ayant reussi à implemeter un exemple simple puisse me dire s'il a déjà rencontré ce problème et comment il l'a résolu (d'où la raison de vivre de ce sujet )
Sinon connaissez vous un autre pool de connexion me permettant de faire la même chose que ce qu'est sensé faire le Datasource de Tomcat?
Marsh Posté le 03-09-2004 à 11:14:16
Ca va finir pas se voir, que je poste régulièrement pour rester sur la première page et avoir une solution
Marsh Posté le 07-03-2005 à 20:51:09
Niala a écrit : J'ai comparé par rapport à mes fichiers de conf, y'a rien de choquant ; j'ai juste pas le même driver mysql que toi (enfin le nom du fichier jar). |
moi je tente d'utiliser l'outil PoolMan pour gérer le regroupement de connexions mais tomcat ne trouve pas mon fichier poolman.xml
j'ai lu des docs sur Internet qui disent que ce fichier doit se situer dans le repertoire WEB-INF/classes mais ça ne marche toujours pas.
quelqu'un arait une idée
Eventuellement la configuration via le fichier server.xml m'interesse également car j'ai essayé mais ça ne marche pas non plus!
merci d'avance
Marsh Posté le 24-08-2004 à 14:11:03
Bonjour,
j'essaie d'utiliser le pool de connexion de tomcat 5, et jusqu'à maintenant c'est pas très brillant!!
voici mon fichier serveur.xml
<Context path="/essai" docBase="essai" debug="5" reloadable="true" crossContext="true">
<Logger className="org.apache.catalina.logger.FileLogger" prefix="localhost_essai_log." suffix=".txt" timestamp="true"/>
<Resource name="jdbc/essai" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/essai">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>100</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>30</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>10000</value>
</parameter>
<parameter>
<name>username</name>
<value>test</value>
</parameter>
<parameter>
<name>password</name>
<value>test</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.mysql.jdbc.Driver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:mysql://localhost:3306/javatest</value>
</parameter>
</ResourceParams>
</Context>
Maintenant voici mon fichier web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app>
<display-name>essai</display-name>
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/essai</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
<listener>
<listener-class>listeners.ContextListener</listener-class>
</listener>
<listener>
<listener-class>listeners.SessionListener</listener-class>
</listener>
<servlet>
<servlet-name>test</servlet-name>
<servlet-class>database.test</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>test</servlet-name>
<url-pattern>/test</url-pattern>
</servlet-mapping>
</web-app>
et maintenant ma servlet:
public class test extends HttpServlet {
private DataSource ds;
public void init() throws ServletException
{
try
{
Context init = new InitialContext();
Context ctx = (Context) init.lookup("java:comp/env" );
ds = (DataSource) ctx.lookup("jdbc/essai" );
}
catch(NamingException ne)
{
throw new ServletException("problème lors du chargement du driver ",ne);
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
PrintWriter out = response.getWriter();
try
{
Connection con = ds.getConnection();
String query = "SELECT * FROM userdata";
PreparedStatement pst = con.prepareStatement(query);
ResultSet r = pst.executeQuery();
while(r.next())
{
int id = r.getInt(0);
String foo = r.getString(1);
String bar = r.getString(2);
out.println(id+"|"+foo+"|"+bar);
}
}
catch(SQLException sqle){out.println(sqle);}
}
}
Et je reçois le message d'erreur suivant:
org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'
J'obtiens le même message d'erreur avec l'exemple d'utilisation fourni sur le site de Apache http://jakarta.apache.org/tomcat/t [...] howto.html
Quelqu'un peut il m'aider? Merci d'avance