Bonjour,
J'utilise Eclipse 3.2 et Tomcat 5.5. J'ai developpe une premiere application toute simple, avec une requete a une base de donnees. Probleme, j'aiune exception a l'execution: NullPointerException, a la ligne ou je fais: con = ds.getConnection();. Mon application s'appelle test.

Voila les morceaux interressants de mon server.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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
 
 <GlobalNamingResources>
    <Environment
      name="simpleValue"
      type="java.lang.Integer"
      value="30"/>
    <Resource
      name="SRDemoDS"
      type="javax.sql.DataSource"
      password="oracle"
      driverClassName="oracle.jdbc.OracleDriver"
      maxIdle="2"
      maxWait="5000"
      username="srdemo"
      url="jdbc:oracle:thin:@ifs_alpha:1521:A1"
      maxActive="4"/>
   </GlobalNamingResources>
   <Service
      name="Catalina">
...
   <Engine
        defaultHost="localhost"
        name="Catalina">
      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"/>
      <Host
          appBase="webapps"
          name="localhost">
        <Context
            path="/test">
          <Resource
            auth="Container"
            description="reference to SRDemo DB for testing connection"
            name="SRDemoDS"
            type="javax.sql.DataSource"/>
        </Context>
      </Host>
    </Engine>
  </Service>
</Server>
Voici mon 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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" 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">
        <display-name>test</display-name>
        <servlet>
        <servlet-name>ServletTest</servlet-name>
        <servlet-class>bison.romain.servlets.test.ServletTest</servlet-class>
        <init-param>
            <param-name>defaultNom</param-name>
            <param-value>inconnu</param-value>
        </init-param>
        <init-param>
            <param-name>defaultAge</param-name>
            <param-value>XXX</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>ServletTest</servlet-name>
        <url-pattern>/ServletTest</url-pattern>
        </servlet-mapping>
        <resource-ref>
                <description>
                        reference to SRDemo DB for testing connection
                </description>
                <res-ref-name>
                        SRDemoDS
                </res-ref-name>
                <res-type>
                        javax.sql.DataSource
                </res-type>
                <res-auth>
                        Container
                </res-auth>
        </resource-ref>
</web-app>
Et voici mon code:

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
68
69
 
public class ServletTest
extends HttpServlet {
// paramètres d'instance
private String defaultNom = null;
private String defaultAge = null;
//init
public void init() {
// on récupère les paramètres d'initialisation de la servlet
ServletConfig config = getServletConfig();
defaultNom = config.getInitParameter("defaultNom");
}
 
private DataSource ds;
 
//GET
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
// on récupère les paramètres du formulaire
String nom = request.getParameter("txtNom");
String age = request.getParameter("txtAge");
 
Connection con=null;
Statement s=null;
ResultSet rs=null;
 
response.setContentType("text/html");
PrintWriter out=response.getWriter();
out.println(
"<html>"+
"<body>");
 
try {
//	récupération de la Connection depuis le DataSource
	con = ds.getConnection();
	s = con.createStatement();
	rs = s.executeQuery("SELECT * FROM users");
	while (rs.next()) {
	out.println(rs.getString(4) + " ");
	out.println(rs.getString(5) + "<br/>");
	}
	} catch (SQLException e) {
	response.sendError(500, "Exception on DB access " + 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(
"<center>"+
...
)
}}
Voila. sinon, je pense que les parametres de ma datasource sont corrects puisque j'y accede d'une autre facon et ca fontionne. est-ce qu'il manque quelque chose?

Merci