Setup Tomcat Installare Java SDK * (http://java.sun.com/j2se/1.4.2/download.html) ad es. in c:\programmi\j2sdk1.4.2_08 Impostare la variabile d'ambiente JAVA_HOME (e.g. JAVA_HOME=c:\programmi\j2sdk1.4.2_08) Installare Tomcat http://tomcat.apache.org/tomcat 5.5 doc/index.html * si ricorda che la versione di Java usata per il progetto è 1.5.0_11
Tomcat directory e files These are some of the key tomcat directories, all relative to $CATALINA_HOME (è la directory base di Tomcat): * /bin Startup, shutdown, and other scripts. The *.sh files (for Unix systems) are functional duplicates of the *.bat files (for Windows systems). Since the Win32 command line lacks certain functionality, there are some additional files in here. * /conf Configuration files and related DTDs. The most important file in here is server.xml. It is the main configuration file for the container. * /logs Log files are here by default. * /webapps This is where your webapps go.
Tomcat e JSP Drop some simple HTML and JSP pages into $CATALINA_HOME/webapps/ROOT and access them with http://localhost:8080/filename.
Tomcat e MySQL Per la connessione al database serve il driver (http://dev.mysql.com/downloads/connector/j/5.0. html) da installare (serve solo il file jar dezippato contenuto nel tar.gz che ha un nome del tipo mysql connector java 5.0.5 bin.jar) in: $CATALINA_HOME\common\lib N.b. occorre riavviare Tomcat
Connessione al database e connection pool Preventing db connection pool leaks A database connection pool creates and manages a pool of connections to a database. Recycling and reusing already existing connections to a db is more efficient than opening a new connection.
Configurazione Tomcat Con Tomcat si può usare un file XML per ogni applicazione; la configurazione dell'applicazione è scritta in un file XML A Context XML descriptor is a fragment of XML data which contains a valid Context element which would normally be found in the main server configuration file (conf/server.xml), and allows easy and automated manipulation of web applications by the various management tools available in Tomcat. For a given host, the Context descriptors are located in $CATALINA_HOME/conf/[enginename]/[hostname]/foo.xml. Per ogni gruppo di studenti è già stato definito un file di configurazione affinchè ognuno abbia a disposizione una applicazione Tomcat. Per ulteriori informazioni si veda http://tomcat.apache.org/tomcat 5.5 doc/deployer howto.html
tm07_15.xml <Context docbase="/home/www/tomcat/tm07_15" crosscontext="true" reloadable="true" path="/tm07_15" debug="0" > <Logger suffix=".log" prefix="tm15." classname="org.apache.catalina.logger.filelogger" timestamp="true" /> <Resource name="jdbc/conntm15" scope="sharable" auth="container" type="javax.sql.datasource" /> factory="org.apache.commons.dbcp.basicdatasourcefactory" url="jdbc:mysql://localhost:3306/tm07_15?autoreconnect=true" driverclassname="com.mysql.jdbc.driver" username="tm07_15" password="pippo"... </Context>
tm07_15.xml Un esempio di configurazione di una applicazione Tomcat: http://dm.unife.it/~marchett/materiale/2007/lab/tm07_15.xml In particolare: In Context l'attributo docbase indica la cartella che contiene l'applicazione e path indica il percorso a cui chiedere l'applicazione (ad es. http://dynamo1.bloccob.man:8080/tm07_15/nome file.jsp; se docbase=/home/www/tomcat/tm07_15 e path=/tm07_15 allora i file saranno messi in /home/www/tomcat/tm07_15 e saranno richiesti al server con l'url http://dynamo1.bloccob.man:8080/tm07_15/nome file.jsp In Resource l'attributo name indica il nome della risorsa che dovra' essere usato nel file JSP; questo è il nome che verrà utilizzato per la connessione al db <name>username</name> e <value>utente db</value> indica il nome dell'utente che accede al db <name>password</name> <value>pwddb</value> indica la password dell'utente che accede al db
tm07_15.xml Si metta il file tm07_15.xml in $CATALINA_HOME/conf/Catalina/localhost/
JSP e connection pool <%@ page language="java" import="java.sql.*,javax.sql.*, javax.naming.*" %> <% Connection connection; Statement statement; Context initcontext = new InitialContext(); Context envcontext = (Context)initContext.lookup("java:/comp/env"); DataSource ds = (DataSource)envContext.lookup("jdbc/ConnTmxy"); connection = ds.getconnection(); statement = connection.createstatement(); statement.executeupdate("insert INTO ruolo (descr) VALUES ('ciao')"); connection.close(); %>
... Esempio di inserimento di un campo di tipo timestamp in una tabella con chiave autoincrementale // tabella zzz con campi idz (chiave autoincrementale), descr (char 30) e x (timestamp) // Date nel formato'yyyy MM DD HH:MM:SS' statement.executeupdate("insert INTO zzz (descr, x) VALUES ('aaa1','2005 04 21 22:44:27')"); int autoinckeyfromapi = 1; rs = statement.getgeneratedkeys(); // Retrieves any auto generated keys created as a result of executing this Statement object. if (rs.next()) { autoinckeyfromapi = rs.getint(1); } else { // throw an exception from here } out.println("ecco il valore della chiave appena inserita:"+new Integer(autoIncKeyFromApi).toString()); > CONTINUA
... Esempio di inserimento di un campo di tipo timestamp in una tabella con chiave autoincrementale rs = statement.executequery("select x FROM zzz where idz=9"); while (rs.next()) { java.sql.timestamp timestamp = null; timestamp = rs.gettimestamp(1); // 1 è la colonna out.println("giorno:"+timestamp.getdate()); out.println("mese:"+timestamp.getmonth()); out.println("anno:"+timestamp.getyear()); out.println("ore:"+timestamp.gethours()); out.println("minuti:"+timestamp.getminutes()); out.println("secondi:"+timestamp.getseconds()); } rs.close(); %>
Riferimenti http://java.sun.com/j2se/1.5.0/docs/api/