IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tomcat et TomEE Java Discussion :

[Debutant]Connection a une Base de Donnees: NullPointerException


Sujet :

Tomcat et TomEE Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Romain93
    Inscrit en
    Septembre 2005
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 71
    Par défaut [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 : 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

  2. #2
    Membre confirmé Avatar de Romain93
    Inscrit en
    Septembre 2005
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 71
    Par défaut
    Oui bien sur, je ne recupere pas le datasource dans init. je corrige ca et j'essaye.

  3. #3
    Membre confirmé Avatar de Romain93
    Inscrit en
    Septembre 2005
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 71
    Par défaut
    Ouin, j'ai une autre erreur a l'execution maintenant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    HTTP Status 500 - Exception on DB access org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'
     
    --------------------------------------------------------------------------------
     
    type Status report
     
    message Exception on DB access org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'
     
    description The server encountered an internal error (Exception on DB access org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null') that prevented it from fulfilling this request.
    Voici ce que j'ai mis dans mon init:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    try {
    	Context initCtx = new InitialContext();
    	ds = (DataSource) initCtx.lookup("java:comp/env/SRDemoDS");
    	} catch (Exception e) {}
    Avez-vous deja rencontre le meme probleme?

    Merci

  4. #4
    Rédacteur/Modérateur
    Avatar de Laurent.B
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2004
    Messages
    3 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 3 468
    Par défaut
    Le driver est-il dans common/lib de tomcat?
    Responsable FAQ Eclipse | Maintiens et développe un des logiciels destinés aux rédacteurs sur developpez.com
    Gardons toujours à l'esprit que le forum constitue une base documentaire, dont l'utilité et la qualité dépendent du soin apporté à nos questions et nos réponses. Soyons polis, précis (dans le titre et dans le corps des questions), concis, constructifs et faisons de notre mieux pour respecter la langue française et sa grammaire. Merci pour nous (les modérateurs) mais aussi et surtout, merci pour vous.
    Problème solutionné => je vais au bas de la page et je clique sur le bouton (qui suite à mise à jour du forum, a légèrement changé d'aspect).

  5. #5
    Membre confirmé Avatar de Romain93
    Inscrit en
    Septembre 2005
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 71
    Par défaut
    Je viens de mettre dans common/lib les derniers commons-collections, commons-pool et commons-dbcp que j'ai telecharges sur le site d'apache. j'ai arrete et redemarre tomcat. mais ca ne change rien

  6. #6
    Rédacteur/Modérateur
    Avatar de Laurent.B
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2004
    Messages
    3 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 3 468
    Par défaut
    Oui mais le drive Oracle, il y est lui ???
    Tu fais appel à une DataSource configurée dans Tomcat, donc ta webapp n'a pas besoin d'avoir le driver oracle mais c'est Tomcat qui doit l'avoir dans son repertoire common/lib.
    Responsable FAQ Eclipse | Maintiens et développe un des logiciels destinés aux rédacteurs sur developpez.com
    Gardons toujours à l'esprit que le forum constitue une base documentaire, dont l'utilité et la qualité dépendent du soin apporté à nos questions et nos réponses. Soyons polis, précis (dans le titre et dans le corps des questions), concis, constructifs et faisons de notre mieux pour respecter la langue française et sa grammaire. Merci pour nous (les modérateurs) mais aussi et surtout, merci pour vous.
    Problème solutionné => je vais au bas de la page et je clique sur le bouton (qui suite à mise à jour du forum, a légèrement changé d'aspect).

  7. #7
    Membre confirmé Avatar de Romain93
    Inscrit en
    Septembre 2005
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 71
    Par défaut
    En effet, j'y avais pas trop pense.
    Dans common/lib j'ai ojdbc14.jar et ojdbc14dms.jar. Ce ne sont pas ca les drivers?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 24/04/2008, 14h34
  2. Réponses: 5
    Dernier message: 19/10/2006, 14h28
  3. connecter a une base de donnee distante
    Par adgabd dans le forum Delphi
    Réponses: 14
    Dernier message: 16/08/2006, 15h19
  4. [C# 2.0] Comment se connecter à une base de données SQL Server ?
    Par prince_antonio dans le forum Accès aux données
    Réponses: 5
    Dernier message: 14/07/2006, 11h44
  5. [VB6]Connection à une base de données Oracle
    Par Zoilus dans le forum VB 6 et antérieur
    Réponses: 25
    Dernier message: 08/04/2004, 10h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo