Bonjour à tous,
j'ai toruvé plusieurs problèmes similaires sur le fofo mais rien de bien clair alors je vais essayer de formuler mon probleme de la façon la plus précise possible.

Je souhaite reprendre des Tp que j'ai déjà fais sous struts, mais en utilisant netbean, et sous un OS windows xp.
Il n'est pas souhaité d'utiliser un pool de connection via les datasources, j'ai donc repris le tp ou l'on faiait une connection "mnauelle"

J'ai installé la library .jar pour le driver sql:
mysql-connector-java-5.0.6-bin.jar

Voici le code que j'ai rajouté:
context.xml
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
<Context path="/monsite">
  <Resource name="jdbc/myDB" auth="Container"
         type="javax.sql.DataSource" 
         username="root" 
         password=""
         driverClassName="com.mysql.jdbc.Driver"
         url="jbdc:mysql://localhost:3306/mabase/"
         maxActive="10" maxIdle="4"/>
</Context>
web.xml:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<web-app version="2.4" 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">
 
<!--le début de la config qui fonctionne...-->
 
<resource-ref>
        <description>
            Access to YourDB
        </description>
        <res-ref-name>
            jdbc/myDB
        </res-ref-name>
        <res-type>
            javax.sql.DataSource
        </res-type>
        <res-auth>
            Container
        </res-auth>
    </resource-ref>
</web-app>
l'action associé:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
public class loginAction extends Action {
    public ActionForward execute(ActionMapping mapping, ActionForm  form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
 
        loginForm actionForm = (loginForm)form;
 
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
        String login = actionForm.getLogin();
        String password = actionForm.getPassword();
        ActionMessages errors = new ActionMessages();
 
        try {
 
            // Obtain our environment naming context
            Context initCtx = new InitialContext();
            Context envCtx = (Context) initCtx.lookup("java:comp/env");
 
            // Look up our data source
            DataSource ds = (DataSource) envCtx.lookup("jdbc/myDB");
 
            // Allocate and use a connection from the pool
            conn = ds.getConnection();
 
            // Fetch and display data
            stmt = conn.createStatement();
            String requete = "Select identifiant, mot_de_passe from utilisateurs where identifiant=`"+login+"` and mot_de_passe=`"+password+"`";
            // SQL code
            rs = stmt.executeQuery(requete);
            if (rs.next()) {
 
                //il ya un resultat (ou plus)
                HttpSession session = request.getSession(true);
                session.setAttribute("authentified", new Boolean(true) );
 
                return (mapping.findForward("success"));
            }else{
                errors.add("login",new ActionMessage("error.login.invalid"));
                saveErrors(request,errors);
                return (mapping.findForward("failure"));
            }
        // Make sure we do not close it twice
        } catch (SQLException e) {
            System.out.print("database exception:\n"+e);
            errors.add("login",new ActionMessage("error.DBerror"));
            saveErrors(request,errors);
            return (mapping.findForward("failure"));
        }finally {
            // Always make sure result sets and statements are closed,
            // and the connection is returned to the pool
            if (rs != null) {
                try { rs.close(); } catch (SQLException e) { ; }
                rs = null;
            }
            if (stmt != null) {
                try { stmt.close(); } catch (SQLException e) { ; }
                stmt = null;
            }
            if (conn != null) {
                try { conn.close(); } catch (SQLException e) { ; }
                conn = null;
            }
        }                                    
    }
}
Il se trouve qu'il ya échec sur la connection car la vue retournée affiche un message d'erreur error.DBerror. Le code ci-dessou est donc exécuté
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
catch (SQLException e) {
            System.out.print("database exception:\n"+e);
            errors.add("login",new ActionMessage("error.DBerror"));
            saveErrors(request,errors);
            return (mapping.findForward("failure"));
Mon premier probleme est que je ne sais pas ou trouver le réultat de l'affichage "System.out.print(e);" donc il m'est impossible de voir lerreur. J'ai cherché dans le dossier log mais aucune ligne ne concernant ce probleme n'est présente(C:\Documents and Settings\user\.netbeans\5.5\apache-tomcat-5.5.17_base\logs), donc pour le moment impossible de vous afficher le trace exact.

Sinon il se pourrait que se soit ma config de la base qui est mal faite (le code étant repris et fonctionnant sur mon lieu de travail).
Mysql est installé avec WAMP. Le fichier my(WAMP).ini contient une ligne

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
# ----------------------------------------------------------------------
#
# The following options will be read by MySQL client applications.
# Note that only client applications shipped by MySQL are guaranteed
# to read this section. If you want your own MySQL client program to
# honor these values, you need to specify it as an option during the
# MySQL client library initialization.
#
[client]
port=3306
#...
# The TCP/IP Port the MySQL Server will listen on
port=3306
d'où le url="jbdc:mysql://localhost:3306/mabase/" (en enlevant le 3306 ça déconne quand même).

J'aimerais donc avoir un peu d'aide là dessus car j'ai beau chercher ya un truc qui va pas
A mons ais et comme je l'ai déjà dit, ça vient de la config pour la base car le reste n'est que du copier coller du code qui fonctionnait déjà...
Si quelqu'un a une solution ou un indice pour me mettre sur la piste.

en vous remerkiant

edit: je n'ai rien touché dans l'admin de tomcat, ni au niveau datasource, ni au niveau userdatabase. D'après ce que j'ai compris, la seule configuration des fichiers ci desssus suffit et il n'ets pas nécessaire d'en définir plus. ai-je tort?