bonjour
j'ai un petit probleme avec netbeans et hibernate malgré les tuto et le livre...
et j'ai déja chercher sur les forum et sur google ( plusieurs jours déja )
je suis déja à 2 semaine de java a temps plein
Environement:
Netbeans 5.5 -> environement choisi pour le projet
hibernate 3.2
MySQL 5.0 -> base de données choisi par le projet
edit:
je pense avoir trouver une piste pour probleme décrit ci dessous :
en regardant les log j'ai vu qu'il n'arrive pas a trouver le fichier de conf
dans netbeans on doit le mettre ou ?
Code:
log4j:WARN No appenders could be found for logger (org.apache.commons.digester.Digester.sax).
log4j:WARN Please initialize the log4j system properly.
20 mars 2007 17:14:00 org.apache.catalina.core.StandardContext start
INFO: Le conteneur org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/test] a déjà été démarré
Initial SessionFactory creation failed.org.hibernate.HibernateException: /hibernate.cfg.xml not found
fin edit
je travail sur un exemple tout simple décrit beaucoup plus en détails ci dessous.
je dois signaler que mysql marche bien mais j'ai un doute sur la connexion entre hibernate et mysql ainsi que sur les paths des différents fichier a mettre en place
quelqu'un pourrais t'il m'indiquer les étapes et les repertoires où mettre mes différents fichiers parce que je ne comprend pas pourquoi cela ne marche pas
( message d'erreur tout a la fin )
par avance merci au gens qui voudront m'aider et le pourront
dans la config de netbeans :
Dois je ajouter le driver MySQL dans Netbeans ? ( runtime -> drivers )
Ou est ce que je dois ajouter directement une data source via interface web dans
http://localhost:8084/admin/ -> ressources -> une datasource
je dois dire que j'ai fait les deux successivement sans succes avec hibernate !
Par contre les ptit script normaux de connexion à une base de données marche.
Description de mes fichiers :
BASE DE DONNEES
user : toto
pass : toto
base : test
table : toto que j'ai rempli de quelque ligne
Code:
CREATE TABLE `toto` (
`id` int(10) NOT NULL auto_increment,
`nom` varchar(20) NOT NULL default 'toto',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
NETBEANS
Nom du projet : test
type : application web
option particuliere :
l'option Set Source level to 1.4 est décoché
l'option JSF est coche, j'ai gardé la config donnée par défaut
Librairies:
nom: hibernate-mysql
contenu :
hibernate3.jar
mysql-connector-java-5.0.4-bin.jar
+ la liste ci dessous
liste des lib du tar.gz
Code:
_README.txt jaas.jar
ant-1.6.5.jar jaas.licence.txt
ant-antlr-1.6.5.jar jacc-1_0-fr.jar
ant-junit-1.6.5.jar javassist.jar
ant-launcher-1.6.5.jar jaxen-1.1-beta-7.jar
ant-swing-1.6.5.jar jboss-cache.jar
antlr-2.7.6.jar jboss-common.jar
antlr.license.txt jboss-jmx.jar
apache.license-2.0.txt jboss-system.jar
apache.license.txt jdbc2_0-stdext.jar
asm-attrs.jar jdbc2_0-stdext.licence.txt
asm.jar jgroups-2.2.8.jar
c3p0-0.9.1.jar jta.jar
c3p0.license.txt jta.licence.txt
cglib-2.1.3.jar junit-3.8.1.jar
checkstyle-all.jar log4j-1.2.11.jar
cleanimports.jar oscache-2.1.jar
commons-collections-2.1.1.jar proxool-0.8.3.jar
commons-logging-1.0.4.jar swarmcache-1.0rc2.jar
concurrent-1.3.2.jar syndiag2.jar
connector.jar version.properties
connector.licence.txt versioncheck.jar
dom4j-1.6.1.jar xerces-2.6.2.jar
ehcache-1.2.3.jar xml-apis.jar
JAVA CODE mis dans le meme package
pakage : essai
Class Toto : toto.java
Code:
package essai;
public class Toto
{
public Toto(){}
private Integer id;
private String nom;
public Integer getId() { return id; }
private void setId(Integer id) { this.id = id; }
public String getNom() { return nom; }
public void setNom(String nom){ this.nom = nom; }
}
servlet : voir.java
desc : afficher les elements (code recuperer et adapter du tuto officiel)
Code:
package essai;
import java.io.*;
import java.net.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.ServletException;
import java.util.*;
import java.text.SimpleDateFormat;
import essai.HibernateUtil;
public class voir extends HttpServlet {
protected void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException, IOException
{
try {
HibernateUtil.getSessionFactory().getCurrentSession().beginTransaction();
PrintWriter out = response.getWriter();
List result = HibernateUtil.getSessionFactory().getCurrentSession().createCriteria(Toto.class).list();
if (result.size() > 0) {
for (Iterator it = result.iterator(); it.hasNext();) {
Toto toto = (Toto) it.next();
out.println("<p>");
out.println("<br />id : " + toto.getId() );
out.println("<br />nom: " + toto.getNom() );
out.println("</p>");
}
}
out.flush();
out.close();
HibernateUtil.getSessionFactory().getCurrentSession().getTransaction().commit();
}
catch (Exception ex)
{
HibernateUtil.getSessionFactory().getCurrentSession().getTransaction().rollback();
throw new ServletException(ex);
}
}
}
Class: HibernateUtil.java
desc: une classe qui aide a la connexion à hibernate si j'ai saisi
Code:
package essai;
import org.hibernate.*;
import org.hibernate.cfg.*;
public class HibernateUtil {
private static final SessionFactory sessionFactory;
static {
try {
// Create the SessionFactory from hibernate.cfg.xml
sessionFactory = new Configuration().configure().buildSessionFactory();
} catch (Throwable ex) {
// Make sure you log the exception, as it might be swallowed
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
XML -> je ne sais pas ou les mettres
config : hibernate.cfg.xml -> je l'ai mis dans WEB-INF sans succes et puis dans le package essai mais sans succes tjs
Code:
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test</property>
<property name="hibernate.connection.username">toto</property>
<property name="hibernate.connection.password">toto</property>
<property name="show_sql">true</property>
<!-- mapping de base-->
<mapping resource="java/essai/Toto.hbm.xml"/>
</session-factory>
</hibernate-configuration>
config : Toto.hbm.xml -> je l'ai mis dans le package essai
Code:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="Toto" table="toto">
<id name="id" column="id">
<generator class="increment"/>
</id>
<property name="nom" column="nom"/>
</class>
</hibernate-mapping>
enfin voila cela m'affiche ceci comme erreur
Code:
exception
javax.servlet.ServletException: L'exécution de la servlet a lancé une exception
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)
cause mère
java.lang.NoClassDefFoundError
essai.voir.doGet(voir.java:20)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)
merci aux gens qui voudront m'aider et le pourront
cordialement
mathieu