Das HowTo wurde für MySQL 5 und Debian Etch geschrieben.
Prinzipiell sollte jeder die Schritte auf andere Distributionen oder andere Programmversionen übertragen. Ansonsten stellt eure Fragen bitte im Forum dieses Wikis.
Installation von Java
apt-get install sun-java5-jdk
Installation von Tomcat
apt-get install tomcat5.5 tomcat5.5-webapps
Installation von MySQL
apt-get install mysql-server-5.0
Installation des JDBC Treiber für MySQL
apt-get install libmysql-java
Linken des JDBC Treibers mit Tomcat
cd /usr/share/tomcat5.5/common/lib/
ln -s /usr/share/java/mysql-connector-java.jar mysql-connector-java.jar
Testdatensatz
Um besser auf eventuelle Fehler schließen zu können, empfehle ich hier alle Schritte unverändert durchzuführen und auch die Pfade beizubehalten.
Wenn die Testdaten funktionieren könnt ihr immer noch Experimente starten.
Zuallererst erstellen wir für MySQL einen entsprechenden Benutzer, mit Datenbank und Tabelle.
Machen Sie nicht den Fehler und verwenden Sie gar kein Passwort. Aus Sicherheitsgründen verbietet dies der Treiber.
Wir melden uns in der Shell als Root an.
mysql -h localhost -u root -p
Führt danach folgende befehle in der MySQL Konsole aus
CREATE USER 'ihrBenutzer' IDENTIFIED BY 'neuesPasswort';
CREATE DATABASE javatest;
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON javatest.* TO 'ihrBenutzer'@'localhost' IDENTIFIED BY 'neuesPasswort';
USE javatest;
CREATE TABLE testdata (
id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
foo varchar(25),
bar int
);
Am besten melden wir den Benutzer root nun wieder von der MySQL Tabelle ab und prüfen ob unser neu angelegter die entsprechenden Rechte erhalten hat. Abmelden tut man sich mit dem Befehl \q
Als nächstes fügen wir Beispieldaten in die Testtabelle ein.
INSERT INTO testdata VALUES(NULL, 'hello', 12345);
INSERT INTO testdata VALUES(NULL, 'hello', 12346);
INSERT INTO testdata VALUES(NULL, 'hello', 12347);
projekt.xml
JNDI ist eine Schnittstelle innerhalb für Namens- und Verzeichnisdienste. Mit Hilfe dieser Schnittstelle können Daten und Objektreferenzen anhand eines Namens abgelegt und von Nutzern der Schnittstelle abgerufen werden.
Wenn unser Projekt im Hauptverzeichnis liegt, findet die Konfiguration in der ROOT.xml statt.
/usr/share/tomcat5.5-webapps/ROOT.xml
Es sollte bereits ein Context Tag existieren. Dort müsst ihr nur die Ressource hinzufügen. Am Ende sieht die Datei wie folgt aus
ROOT.xml
<!--
Context configuration file for the Tomcat Web App Root
-->
<Context path="/" docBase="/usr/share/tomcat5.5-webapps/ROOT"
debug="0" privileged="true" allowLinking="true">
<Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="ihrBenutzer" password="neuesPasswort" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/javatest?autoReconnect=true"/>
</Context>
JSTL und Taglibs
Für den Zugriff aus den Servlets nutzen wir Jakarta Taglibs.
Ladet euch dazu eine aktuelle Version von der offiziellen Website herunter.
Entpackt die Dateien jstl.jar und standard.jar aus standard/lib direkt ins Verzeichnis von /usr/share/tomcat5.5-webapps/ROOT/WEB-INF/lib.
Wir müssen außerdem die Deklarationen der Taglibraries ins Projekt entpacken.
Dazu c.tld und sql.tld aus standard/tld in /usr/share/tomcat5.5-webapps/ROOT/WEB-INF/ kopieren.
Die Dateinamen sind dabei egal. Die Deklarationen werden automatisch aus dem Verzeichnis geladen und müssen seit Version 2.4 der web.xml nicht mehr direkt referenziert werden.
web.xml
Jetzt müssen wir die Tag Libraries in die "web.xml" eintragen:
Bearbeitet die Datei /usr/share/tomcat5.5-webapps/ROOT/WEB-INF/web.xml damit sie wie folgt aussieht
web.xml
<web-app 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"
version="2.4">
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/TestDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
JSP Code
Als letztes müsst ihr noch einen Test Code erstellen (z.B. /usr/share/tomcat5.5-webapps/ROOT)
test.jsp
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<sql:query var="rs" dataSource="jdbc/TestDB">
select id, foo, bar from testdata
</sql:query>
</head>
<c:forEach var="row" items="${rs.rows}">
</c:forEach>
</body>
</html>
Startet nur euren Tomcat neu
/etc/init.d/tomcat5.5 restart
Und alles sollte funktionieren.