Bon, nous allons partir du principe que vous avez une installation qui fonctionne pour NetBeans et MySQL. Ces programmes sont disponibles pour beaucoup trop de plate-formes (Linux, Windows, MacOSX ...) pour détailler chaque setup, reportez vous à la documentation correspondante, mais des installeurs et des packages étant disponibles pour chaque logiciel c'est assez trivial.
Dans votre serveur de base de données (MySQL ici) créez une base « mabase » et une table « users » avec trois colonnes (id, prenom, nom) avec « id » en clef primaire et saisissez donc quelques amis dedans.
Une fois que cela est fait, démarrez NetBeans !
La première chose que nous allons faire est de récupérer/créer l'utilisateur Admin/Manager dans Tomcat 5.5 car nous allons avoir besoin d'accéder à l'interface d'administration du serveur. Dans Netbeans allez à l'onglet Runtime, puis dépliez « Servers », cliquez droit sur « Bundled Tomcat » et « Properties ». Regarder le chemin indiqué dans la variable « base directory », et ouvrez ce dossier (...netbeans\4.1\jakarta-tomcat-5.5.7_base\conf
) généralement situé dans votre Home directory. Éditez le fichier Tomcat-users.xml
avez votre éditeur préféré et vérifiez que vous avez bien quelque chose comme cela :
<role rolename="manager"/> <role rolename="admin"/> <user username="ide" password="toto" roles="manager,admin"/>
Il faut avoir les rôles « manager » et « admin », plus un utilisateur qui possède ces rôles. Cela est normalement fait par NetBeans qui crée cet utilisateur pour vous (username="ide"
) il suffit juste de récupérer son password.
Maintenant nous devons installer le driver Java pour votre base de données dans Tomcat, car nous allons créer un Pool de connections. Pourquoi un Pool ? Pour éviter d'ouvrir et de fermer sans arrêts les connections vers la base, pour pouvoir gérer les ressources (nombre de connections ...), parce que c'est plus pro et performant et qu'un application de production devrait toujours avoir un pool, enfin parce que Hibernate en aura besoin !
Récupérez donc le driver de votre base et placez ce .jar dans le dossier common\lib
de votre Tomcat (sous le dossier d'installation de Netbeans). Attention, j'attire votre attention sur le fait que normalement vous ne devez pas mettre vos librairies Java dans ce dossier, elles devrons se trouver dans votre projet et dans votre Webapp. Nous le faisons ici pour la base de données car Tomcat va créer le pool au moment du démarrage et il aura donc besoin de trouver le driver avant de déployer vos applications.
Pour MySQL, mettre la librairie (mysql-connector-java-3.1.8-bin.jar
) dans netbeans\enterprise1\jakarta-tomcat-5.5.7\common\lib
Maintenant, cliquez droit sur « Bundled Tomcat » dans « Servers » et lancez « Start-Stop Server », dans la fenêtre qui vient de s'ouvrir cliquez « Start ». Ensuite dépliez « WebApplications » sous votre serveur Tomcat, clic droit sur « /admin » et « Open in Browser ». Là vous vous trouvez sur le login de l'interface d'administration de Tomcat, entrez le login/password vu plus tôt dans le fichier Tomcat-users.xml
. Une fois connecté, cliquez sur « Datasources » puis dans le menu déroulant à droite choisissez « add new... ». Ici vous devez entrer les informations relatives à votre BDD (sauf le JNDI name qui sera le même pour tous), reportez vous aux instructions de votre driver, pour MySQL cela donne :
JNDI name : jdbc/mabase DataSourceURL : jdbc:mysql://localhost:3306/mabase?autoReconnect=true JDBC Driver Class : com.mysql.jdbc.Driver User name : root Password : Max Active Connections : 4 Max idle connections : 2 Max wait for connection : 5000 Validation query :
Cliquez sur « save », puis en haut « commit changes », c'est bon vous pouvez quitter l'admin de Tomcat.
Nous allons maintenant créer un dossier dans lequel nous placerons tous nos projets, dans le dossier d'installation de NetBeans, créez un dossier « projects ». Retournez dans NetBeans, cliquez sur l'onglet « projects », nous allons maintenant créer notre premier projet ! Faites « file->new Project » et nommez le « test » (dans « project name »), pour « project location » choisissez le répertoire « projects » que l'on vient de créer dans le dossier d'installation de NetBeans. Cliquez sur « Finish ».
Dans votre projet « test », faites un clic droit sur le dossier « Librairies » et ajoutez la librairie « JSLT 1.1 » nous en aurons besoin pour tester notre pool et la connection à la base de données.
Maintenant dépliez votre dossier « Configuration files », faites un clic droit sur le « web.xml », puis « edit » et ajoutez juste avant la fin :
<resource-ref> <description>Mon Pool de connectionl</description> <res-ref-name>jdbc/mabase</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> <res-sharing-scope>Shareable</res-sharing-scope> </resource-ref>
Faites la même chose pour le fichier « context.xml » (edit) et faites en sorte qu'il ressemble à cela :
<?xml version="1.0" encoding="UTF-8"?> <Context path="/test"> <ResourceLink name="jdbc/mabase" type="javax.sql.DataSource" global="jdbc/mabase"/> </Context>
Ces deux modifications permettent à votre application d'utiliser le pool de connection du serveur, et d'enregistrer son nom (« jdbc/mabase ») de façon à ce qu'il soit disponible dans vos classes et Jsp.
Ouf, on arrive à la fin !! Retournez dans l'onglet « runtime » et arrêtez votre serveur Tomcat, puis redémarrez le. Si vous n'avez pas d'erreurs au redémarrage cela commence à sentir bon. Repassez dans votre projet sous l'onglet « projects » et sous le dossier « Web Pages » et ouvrez « index.jsp ». Nous allons modifier cette page pour vérifier que le pool et la connection à la base, mais c'est juste un test rapide, en temps normal vous ne voudriez pas faire cela directement dans la jsp. Modifiez « index.jsp » pour qu'elle ressemble à cela :
<%@page contentType="text/html"%> <%@page pageEncoding="UTF-8"%> <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> </head> <body> <h1>JSP Page</h1> <sql:query var="queryresults" dataSource="jdbc/mabase"> SELECT * FROM USERS </sql:query> <table border=1> <tr> <th>ID</th><th>PRENOM</th><th>NOM</th> </tr> <c:forEach var="row" items="${queryresults.rows}"> <tr> <td><c:out value="${row.ID}" /></td> <td><c:out value="${row.PRENOM}" /></td> <td><c:out value="${row.NOM}" /></td> </tr> </c:forEach> </table> </body> </html>
Sauvegardez, faites « F11 » pour recompiler votre projet, puis clic droit sur votre projet « test » et faites « deploy », ensuite appelez cette url dans votre navigateur :
http://localhost:8084/test/
Et vous devriez voir apparaître un tableau avec les données de votre table « users ».
Félicitations ! Nous avons créé un pool dans Tomcat, nous l'avons rendu disponible dans notre application et nous l'avons utilisé dans notre projet. La prochaine fois nous allons intégrer Hibernate à notre projet afin de bénéficier de ses fonctionnalités sur les BDD, dont celle (et pas des moindres) qui permet de changer de base de données sans changer une ligne de code !
N'hésitez pas à commenter, corriger et poser des questions dans les commentaires de ce billet.
1 De Laurent Foret -
Salut,
Interressant et continue, j'ai jamais encore joué avec hibernate.
Laurent.
2 De vdb -
Netbeans m'est apparu comme un peu faible en facilités pour bases de données.
(J'emploie JBuilder au boulot)
J'observe ton travail avec beaucoup de curiosité.
Continue!
vdb
3 De Richard -
Oufffff, du grand "Bourz" sur ce post !!!!
J'ai rien compris, bon je sais, comme d'hab.
4 De Da Bourz -
Richard, c'est pourtant pas difficile et puis tu as le temps de t'y mettre !
5 De Da Bourz Blog -
NetBeans, Une application Web : Hibernate (partie II)
Nous allons donc commencer par configurer Hibernate (quand on fait de la programmation Java on configure beaucoup, je ne connais pas un autre langage avec autant de fichiers de configuration ! ). Sur Hibernate.org, téléchargez la dernière...
6 De Nicoo -
Salut bravo pour ce tuto mais j'ai un probleme a l'execution :
javax.servlet.ServletException: Unable to get connection, DataSource invalid: "java.sql.SQLException: No suitable driver"
Pourtant tout est bien mis j'ai verifié au niveau du serveur et ma bd tourne aussi
AS tu une solution?
7 De Da Bourz -
Vraisemblablement il te manque le Driver pour ta base de données, il faut que tu le place dans Tomcat/common/lib/
8 De Nicoo -
J'ai vérifié et il est bien présent...
9 De Da Bourz -
10 De Nicoo -
Désolé de vous décevoir je viens de trouver ca n'avait rien a voir, j'invoquais <sql:query var="queryresults" dataSource="jdbc/mabase">
SELECT * FROM USERS
et ma database portait un autre nom
merci pour l'aide
11 De Da Bourz -
Désolé c'est ma faute j'avais pas bien lu le démarrage du message d'erreur, je pensais qu'elle venait au démarrage du serveur et non à l'execution de la JSP ! Sorry !
12 De Nicoo -
Vu que je suis débutant et que vous êtes des pros j'aimerais vous poser la question suivante : comment je peux récupérer la valeur de <c:out value="${row.ID}" /> dans un champ String que je declare en local ?
merci de votre aide
13 De Da Bourz -
A la main, tu boucles sur ton resultSet, si tu fais tout à la main ça donne un truc du genre :
java.sql.Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM Table1");
while (rs.next()) {
// retrieve and print the values for the current row
int i = rs.getInt("a");
String s = rs.getString("b");
float f = rs.getFloat("c");
System.out.println("ROW = " + i + " " + s + " " + f);
}
14 De Nicoo -
Mais en utilisant les tags cest pas possible?
merci
15 De muskad -
j'aimerai savoir comment utiliser netbeans IDE 4.1
en tant qu'émulateur gsm?
16 De Nicoo -
Tu dois telecharger le pack mobility pour la version 4.1 ensuite installe le. Redemarre ton netbeans et cree un projet pour mobile genre HelloWorld execute le code et tu auras le gsm emulé
Nicolas
17 De Da Bourz -
Nico: Ben les tags c'est surtout pour faire de la sortie, jamais essayé de faire ce que tu dis ...
18 De Da Bourz Blog -
NetBeans, Une application Web : Hibernate et Servlet (partie III)
Après le premier épisode, la création de notre projet Web, le deuxième avec la configuration d'Hibernate et la déclaration de notre objet "Utilisateur", nous allons maintenant passer aux choses sérieuses et créer une servlet pour se connecter à notre BDD.
19 De Günther -
Merci pour la instruction, quelle est beaucoup plus detailée que tout ce que j'avais trouvé.
Il y a une chose que je ne comprends pas: j'ai une base mysql avec password. En server.xml, J'ai remplacé "root" avec mon username et entré mon password. Mais rien ne fonctionnait. Seulement quand j'ai remplacè localhost:3036 avec localhost, c'etait bon.
Pourquoi? que signifie le port 3036?
Autre fois, merci beaucoup!
20 De Kris -
Salut Günther
alors le port 3306, c'est le port pour se connecter à MySql.
Moi j'ai un petit problème.
J'ai suivi le tuto, mais j'ai une erreur au lancement de l'appli:
javax.servlet.ServletException: Unable to get connection, DataSource invalid: "org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'"
j'ai fais et refais le tuto et toujours la même erreur
Mon driver (mysql-connector-java-3.1.8-bin.jar) est bien dans le dossier /common/lib de Tomcat.
21 De toma -
salut je sais pas si c'est le bon endroit pour cette question mais enfin...
bref je decouvre struts et hibernate.. et une question me tarode:
dans struts la taglib bean sers a rendre accessible des objets via des variables pour les recup ou les modifier...
Hibernate est utilisé pour la persistence des données.
c'est pas un peu la meme chose?
et si oui alors pourquoi utiliser struts et hibernate ensemble?..
et si non alors juste une phrase courte d'explication svp.. et comprehensible.
merci
pis si c'est possible d'avoir aussi la reponse sur mon mail
22 De Da Bourz -
Beu non, c'est pas du tout pareil, en gros le schema :
jsp <-> Struts <-> hibernate <-> base
Hibernate s'occupe de la couche BDD, Struts gère l'application et demande des données à hibernate pour remplir ses beans (ou renvoyer des données dans la base) et passe ensuite le tout à la couche de présentation, les JSP, dans lequels on utilise les tags Struts pour acceder plus facilement aux données déjà traitées renvoyées par le Frameworks.
Evidement c'est simpliste comme explication, mais en gros c'est l'idée !
23 De Brbi -
Excellent tutorial, qui m'a sorti de deux soirées de recherche.
Merci.
24 De Mimie -
Tout s'est bien passé jusque la dernière étape avec le index.jsp... voici l'erreur que j'ai :
In-place deployment at /usr/java/netbeans-4.1/projects/WebApplication1/build/web
[Fatal Error] :3:6: The markup in the document following the root element must be well-formed.
Deployment error: DOM graph creation failed: org.netbeans.modules.schema2beans.Schema2BeansRuntimeException: Failed to create the XML-DOM Document. Check your XML to make sure it is correct.
The markup in the document following the root element must be well-formed.. See the server log file for details.
/usr/java/netbeans-4.1/projects/WebApplication1/nbproject/build-impl.xml:382: Deployment error: DOM graph creation failed: org.netbeans.modules.schema2beans.Schema2BeansRuntimeException: Failed to create the XML-DOM Document. Check your XML to make sure it is correct.
The markup in the document following the root element must be well-formed.. See the server log file for details.
BUILD FAILED (total time: 6 seconds)
Et voici la ligne 382 où apparemment se trouverait l'erreur (un fichier que je n'ai jamais touché):
<nbdeploy debugmode="true" clientUrlPart="${client.urlPart}"/>
C'est peut-être un .jar pour netbeans à mettre dans le CLASSPATH ? ...
25 De Da Bourz -
Ca me dit rien du tout, mais il est tard et je suis malade.
Est-ce au Run ou lors de la Compilation ?
26 De Mimie -
oui au Run, la compilation passe bien ça me marque "successfull".
J'utilise oracle comme bdd, et voici les paramètres que j'ai mis pour le jndi du départ jdbc:oracle:thin:@localhost:1521:XE (DATA Source Url) et oracle.jdbc.driver.OracleDriver (JDBC Driver Class). Mais je n'ai pas l'impression que c'est un soucis de connexion à la base vu l'erreur que ça affiche :x
C'est bien dommage tout ça, j'aurai bien aimé voir tout ça fonctionnait :x
27 De Da Bourz -
Ca ne serait pas un probleme avec le pool de connection, donc Tomcat, d'Oracle ?
Désolé je ne connais pas Oracle.
28 De piaf -
Bonjour,
J'ai le même problème que Mimie mais j'utilise MySQL... Du nouveau depuis?
29 De Gronono -
Vous n'avez pas d'erreur de frappe dans un fichier xml ??
30 De Scavenger -
Pour ma part, j'utilise Oracle 9i et netBeans 5.0. Mis à part quelques différences de menus, tout semble être identique. Sauf qu'au moment de déployer pour voir le résultat de ma première JSP, j'obtiens la même erreur que mentionnée précédemment :
*********************************************************
In-place deployment at C:\Program Files etbeans-5.0rc2\projects\LineSupport\build\web
C:\Program Files etbeans-5.0rc2\projects\LineSupport bproject\build-impl.xml:446: Deployment error:
DOM graph creation failed: org.netbeans.modules.schema2beans.Schema2BeansRuntimeException: Failed to create the XML-DOM Document. Check your XML to make sure it is correct.
Illegal character at end of document, <.
See the server log for details.
BUILD FAILED (total time: 0 seconds)
*********************************************************
La ligne en question :
<nbdeploy forceRedeploy="${forceRedeploy}" clientUrlPart="${client.urlPart}" debugmode="false"/>
Mon fichier XML ne comporte absolument pas d'erreur, je ne parviens donc pas à comprendre ce qu'il se passe.
Any idea ?
Merci
31 De Scavenger -
Erreur trouvée... Je réfute ma précédente affirmation qui disait que mes fichiers XML étaient clean :
<Context path="/test"/>
<ResourceLink name="jdbc/mabase"
type="javax.sql.DataSource"
global="jdbc/mabase"/>
</Context>
Cherchez l'erreur... :X Il y a un slash en trop, une si petite chose à l'origine de tant de temps perdu et de méninges brulées...
32 De Scavenger -
Une petite contribution utile cette fois :
Sur netBeans 5.0, la demande de login au démarrage du serveur s'effectue lors de l'ouverture du dossier 'Web Applications', et non pas lors du démarrage même.
Mis à part ça, et quelques modifications mineures dans le libellé des menus, le tuto s'applique bien à netBeans 5.0 RC2.
Merci donc
33 De Da Bourz -
>Scavenger :
La prochaine fois fait un copier coller, mon code était bon !
34 De Scavenger -
C'est ça le problème, je suis pas du genre à m'embêter à recopier, donc je ne m'explique pas la présence de ce slash... |-#
35 De Da Bourz -
NetBeans 5.0 qui a mal corrigé ? tu peux confirmer ?
36 De Scavenger -
Je pense plutôt que j'ai dû essayer de triturer un peu le code et qu'un copier-coller malencontreux est arrivé. Je ne peux accuser formellement nb5.0 pour le moment, dans la mesure où cela ne s'est pas reproduit.
37 De ms7 -
salut,
merci pour ton tuto...mais g toujours un petit souci....
NetBeans n´arrive pas a trouve mon driver et je l´ai place dans le bon repertoire. C:\Program Files\NetBeans5.0\enterprise2\jakarta-tomcat-5.5.9\common\lib.
Correct no? et voila le resultat:
java.sql.SQLException: No suitable driver.
Comment faire ? merci
38 De Wam -
JSTL 1.1 au lieu de JSLT 1.1. Je sais je chipote mais j'ai été troublé.
39 De Ptipoulet -
salut et merci pour le tuto il est excellent
je suis sous oracle et jai eu le meme probleme que les autres , aussi resolu en enlevant le /.
ensuite à l'execution le autoreconnect = true avait l'air de poser probleme, et je voulais essayer sans, mais par une fausse manip jai désinstallé le package admin de tomcat semble-t-il. c'est pas difficile il suffit d'aller un peu vite et de faire clic droit puis undeploy au lieu de open in a new browser (snif...). jai essayé de le reinstaller, ce package, mais rien n'y fait.
quelqu'un aurait-il une solution, svp, j'ai un projet a rendre pour mercredi et je sais vraiment plus quoi faire.
merci les gens
40 De 6po -
<%@taglib uri="java.sun.com/jsp/jstl/cor... prefix="c"%>
<%@ taglib prefix="sql" uri="java.sun.com/jsp/jstl/sql... %>
Ces lignes me retourne une erreur : "The absolute uri: /...../ cannot be resolved in either web.xml or the jar files deployer with this application."
Ou est ce que je peux trouver ces fichier?
Je suis sensé ajouter ca dans le /WEB-INF/web.xml
<taglib>
<taglib-uri>mytags</taglib-uri>
<taglib-location>/WEB-INF/taglib.tld</taglib-location>
</taglib>
non ?
Merci
41 De amigoo -
salut
je suis un developpeur j2ee ,j'ai un document qui te aidera beaucoup et pour configurer tomcat si t 'as encor besoin je suis disponible mon e mail
; hilia_3@hotmail.com
42 De DELG -
Ton tuto il est bien mais ta pas beaucoup insisté sur STRUTS, sa configuration (j'ai des difficultés à ce niveau) et surtout l'aspect présentation de STRUTS.
Thanks.
43 De Ahmed -
En réalité au moment de l'execution tout est bien pas d'erreur, par contre sur la page index.jsp ne s'affiche que la requête sql sans résultat.
44 De son -
bravo!!
vous pouvez m'aider pour comprendre J2EE !!
j'ai installé netbeans et lu plein de doc sur ce sujet mais je peux pas démarrer!!
je comprends pas cet IDE!!
HeLp
45 De Da Bourz -
Tiens, un bon début :
http://fr.wikipedia.org/wiki/J2EE
46 De ds -
Bonsoir,
S'il vous plait pouvez-vous nous apporter de l'aide pour la configuration de tomcat 6.0.18 dans netbeans 6.5 ?