Bonjour à tous,
J'ai une question concernant Connection pool au sein d'une application web afin de créer un pool de connexions qui seront partagées parmi plusieurs servlets.
j'utilise:
Web server: Apache-tomcat: 6.0.18
Oracle Database 11g Enterprise: 11.1.0.6.0 - Production
Operating system: Linux (ubuntu 8.10)
IDE: Sun Netbeans
Oralce JDBC Drivers: 11.1.0.7.0-Production (ojdbc6.jar and orai18n.jar)
JDK 1.6
D'habitude, quand je crée des connexions ordinaires (c'est à dire sans pool), je procède de cette façon:
ça fonctionne très bien et j'ai exécuté de nombreux projets avec différents types de requêtes (INSERT, DELETE, etc.) avec cette méthode. A chaque fois j'ai obtenu le résultat de la requête SQL sans problème. Je suis donc sûr que les drivers JDBC Oracle (c'est une base de données Oracle) sont bien détectés avec Netbeans.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 String dbURL = "jdbc:oracle:thin:@localhost:1521:database01"; String username = "scott"; String user_password = "tiger"; String userSqlQuery = "SELECT * FROM mytable"; Connection connection = DriverManager.getConnection (dbURL, username, user_password); Statement statement = connection.createStatement(); statement.executeUpdate(query_text);
Le problème c'est que, visiblement ce n'est plus le cas quand je crée un pool, c'est à dire:
Juste après dataSource.getConnection() c'est java.lang.NullPointerException qui se lance, ce qui à mon sens veut dire que le driver Oracle n'a pas été trouvé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 try { InitialContext ic = new InitialContext(); Context envContext = (Context)ic.lookup("java:/comp/env"); dataSource = (DataSource)envContext.lookup("jdbc/oracle11gEnterprise"); Connection connection = dataSource.getConnection(); } catch (Exception e) { e.printStackTrace(); }
Quelqu'un a une idée?
Merci d'avance,
Voici les deux fichiers context.xml et web.xml que j'ai crées avec Netbeans.
Le fichier context.xml
et le fichier 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 <?xml version="1.0" encoding="UTF-8"?> <Context antiJARLocking="true" path="/WebApplication1"> <Resource name="jdbc/oracle11gEnterprise" scope="Shareable" type="javax.sql.DataSource" auth="Container" description="Oracle Database 11g Enterprise" maxActive="100" maxIdle="30" maxWait="10000" removeAbandoned="true" removeAbandonedTimeout="60" logAbandoned="true" url="jdbc:oracle:thin:@localhost:1521:database01" username="scott" password="tiger" /> </Context>
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 <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <ConsumeOutput>false</ConsumeOutput> <resource-ref> <res-ref-name>jdbc/oracle11gEnterprise</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref> <!-- . . Et ici je définis comme d'habitude les servlets avec URL mappings . -->
Partager