Easy Coding
  Forum Wiki Tagging Projekte Karte RSS
» Start
» All Recent Changes
» Wiki Suche
» Wiki Hilfe

Coder How To's

Algorithmen Informationen

edit SideBar

Neue Wiki Eintrage finden Sie unter easy-coding.de/wiki.

Tomcat mit MySQL, JDBC, JSP, JNDI, ...

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
  1. <!--
  2.     Context configuration file for the Tomcat Web App Root
  3. -->
  4.  
  5. <Context path="/" docBase="/usr/share/tomcat5.5-webapps/ROOT"
  6.    debug="0" privileged="true" allowLinking="true">
  7.  
  8.    <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
  9.         maxActive="100" maxIdle="30" maxWait="10000"
  10.         username="ihrBenutzer" password="neuesPasswort" driverClassName="com.mysql.jdbc.Driver"
  11.         url="jdbc:mysql://localhost:3306/javatest?autoReconnect=true"/>
  12.  
  13. </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
  1. <web-app xmlns="http://java.sun.com/xml/ns/j2ee"
  2.       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3.       xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
  4.       version="2.4">
  5.  
  6. <resource-ref>
  7.  <description>DB Connection</description>
  8.  <res-ref-name>jdbc/TestDB</res-ref-name>
  9.  <res-type>javax.sql.DataSource</res-type>
  10.  <res-auth>Container</res-auth>
  11. </resource-ref>
  12.  
  13. </web-app>

JSP Code

Als letztes müsst ihr noch einen Test Code erstellen (z.B. /usr/share/tomcat5.5-webapps/ROOT)

test.jsp
  1. <%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
  2. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
  3.  
  4. <sql:query var="rs" dataSource="jdbc/TestDB">
  5. select id, foo, bar from testdata
  6. </sql:query>
  7.  
  8.       <title>DB Test</title>
  9. </head>
  10.  
  11. <h2>Results</h2>
  12.  
  13. <c:forEach var="row" items="${rs.rows}">
  14.       Foo ${row.foo}<br/>
  15.       Bar ${row.bar}<br/>
  16. </c:forEach>
  17.  
  18. </body>
  19. </html>

Startet nur euren Tomcat neu

/etc/init.d/tomcat5.5 restart

Und alles sollte funktionieren.

Zuletzt geändert am 01.09.2007 12:12 Uhr
  Impressum