Bonjour,
je suis bloqué sur un projet Java Web, avec des problèmes de liaisons avec le jdbc.
Je travaille sur mac os x (powerbook g4), avec eclipse et une base postgresql.
Lorsque j'essaye d'accéder à ma base (caracas6), ça marche.
Par contre au premier select, tout plante :
Voici les logs et les classes .java
Le log de Tomcat
22 déc. 2006 20:03:13 org.apache.catalina.startup.Catalina start
INFO: Server startup in 12327 ms
22 déc. 2006 20:03:39 org.apache.catalina.core.ApplicationContext log
INFO: IntroForm: ======================VERSION : 10022004_1======================
Il n'y a pas de connection encore, dbReference =carracas6
genericURL, database, login, password + genericURL: caracas6,bdsis,bdsis
Connected to the database: jdbcostgresql:caracas6
LAST_EVENT_NUMBER = 8
ic
ici
22 déc. 2006 20:04:47 org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: "Servlet.service()" pour la servlet IntroForm a généré une exception
java.lang.NullPointerException
at org.postgresql.jdbc2.AbstractJdbc2ResultSet.first(AbstractJdbc2ResultSet.java:235)
at fr.ujfgrenoble.obs.lgit.bdsis.distribForms.util.SQLEngine.getEventNumber(SQLEngine.java:90)
at fr.ujfgrenoble.obs.lgit.bdsis.distribForms.IntroForm.makeHTML(IntroForm.java:172)
at fr.ujfgrenoble.obs.lgit.bdsis.distribForms.IntroForm.doGet(IntroForm.java:145)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:613)
La partie de la classe incriminée :
/**
* Genere le formulaire HTML.
*
* @param database nom de la base de donnees concernee.
* @param networks liste des reseaux.
* @param conn objet connection a la base de donnees
* @return la page HTML creee.
*/
private Html makeHTML(String database) throws UnavailableException{
//Nom du logo (en fonction de la base utilisee)
String jpgLogoReseau="Logo_"+database.toUpperCase()+".jpg";
//creation du paragraphe d'entete:
int stationsNumber, eventNumber, eventRecordNumber;
try {
System.out.println("ic");
stationsNumber = sqlEngine.getStationsNumber(); // nombre total de stations
System.out.println("ici");
eventNumber = sqlEngine.getEventNumber(); // nombre total d'evenements
System.out.println("ici2");
eventRecordNumber= sqlEngine.getEventRecordNumber(); // nombre d'evenements ayant au moins 1 enregistrement
System.out.println("ici3");
} catch (SQLException er) {
throw new UnavailableException(er.getMessage());
}
P paragrapheEntete = HTMLUtil.createParagrapheEntete(stationsNumber, eventNumber, eventRecordNumber);
//
Form form;
Body body;
Html html = new Html()
.addElement(HTMLUtil.createHeader("DataSelectionForm"))
// etc..
}
La partie de la classe sql liée :
/**
* Renvoit le nombre d'evenements stockes dans la base de donnees.
*
* @return le nombre d'evenements stockes dans la base de donnees.
*/
public int getEventNumber() throws SQLException {
Statement statement = conn.createStatement();
//ResultSet resultSet = statement.executeQuery("SELECT COUNT(*) from tg_event WHERE ev_id <> 0");
ResultSet resultSet = statement.executeQuery("SELECT nb_events FROM parametres_application");
//ResultSet resultSet = statement.execute("SELECT nb_events FROM parametres_application");
statement.close();
resultSet.first();
int n = resultSet.getInt(1);
resultSet.close();
return n;
}
Avez-vous une idée?
J'ai bien les dernières versions du driver jdbc, j'utilise le bon java (1.5)..
je suis bloqué sur un projet Java Web, avec des problèmes de liaisons avec le jdbc.
Je travaille sur mac os x (powerbook g4), avec eclipse et une base postgresql.
Lorsque j'essaye d'accéder à ma base (caracas6), ça marche.
Par contre au premier select, tout plante :
Voici les logs et les classes .java
Le log de Tomcat
22 déc. 2006 20:03:13 org.apache.catalina.startup.Catalina start
INFO: Server startup in 12327 ms
22 déc. 2006 20:03:39 org.apache.catalina.core.ApplicationContext log
INFO: IntroForm: ======================VERSION : 10022004_1======================
Il n'y a pas de connection encore, dbReference =carracas6
genericURL, database, login, password + genericURL: caracas6,bdsis,bdsis
Connected to the database: jdbcostgresql:caracas6
LAST_EVENT_NUMBER = 8
ic
ici
22 déc. 2006 20:04:47 org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: "Servlet.service()" pour la servlet IntroForm a généré une exception
java.lang.NullPointerException
at org.postgresql.jdbc2.AbstractJdbc2ResultSet.first(AbstractJdbc2ResultSet.java:235)
at fr.ujfgrenoble.obs.lgit.bdsis.distribForms.util.SQLEngine.getEventNumber(SQLEngine.java:90)
at fr.ujfgrenoble.obs.lgit.bdsis.distribForms.IntroForm.makeHTML(IntroForm.java:172)
at fr.ujfgrenoble.obs.lgit.bdsis.distribForms.IntroForm.doGet(IntroForm.java:145)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:613)
La partie de la classe incriminée :
/**
* Genere le formulaire HTML.
*
* @param database nom de la base de donnees concernee.
* @param networks liste des reseaux.
* @param conn objet connection a la base de donnees
* @return la page HTML creee.
*/
private Html makeHTML(String database) throws UnavailableException{
//Nom du logo (en fonction de la base utilisee)
String jpgLogoReseau="Logo_"+database.toUpperCase()+".jpg";
//creation du paragraphe d'entete:
int stationsNumber, eventNumber, eventRecordNumber;
try {
System.out.println("ic");
stationsNumber = sqlEngine.getStationsNumber(); // nombre total de stations
System.out.println("ici");
eventNumber = sqlEngine.getEventNumber(); // nombre total d'evenements
System.out.println("ici2");
eventRecordNumber= sqlEngine.getEventRecordNumber(); // nombre d'evenements ayant au moins 1 enregistrement
System.out.println("ici3");
} catch (SQLException er) {
throw new UnavailableException(er.getMessage());
}
P paragrapheEntete = HTMLUtil.createParagrapheEntete(stationsNumber, eventNumber, eventRecordNumber);
//
Form form;
Body body;
Html html = new Html()
.addElement(HTMLUtil.createHeader("DataSelectionForm"))
// etc..
}
La partie de la classe sql liée :
/**
* Renvoit le nombre d'evenements stockes dans la base de donnees.
*
* @return le nombre d'evenements stockes dans la base de donnees.
*/
public int getEventNumber() throws SQLException {
Statement statement = conn.createStatement();
//ResultSet resultSet = statement.executeQuery("SELECT COUNT(*) from tg_event WHERE ev_id <> 0");
ResultSet resultSet = statement.executeQuery("SELECT nb_events FROM parametres_application");
//ResultSet resultSet = statement.execute("SELECT nb_events FROM parametres_application");
statement.close();
resultSet.first();
int n = resultSet.getInt(1);
resultSet.close();
return n;
}
Avez-vous une idée?
J'ai bien les dernières versions du driver jdbc, j'utilise le bon java (1.5)..