[Debutant]Connection a une Base de Donnees: NullPointerException
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:
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:
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:
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