Oramai anche il sito più semplice prevede la registrazione degli utenti per offrire servizi quali forum, chat, annunci o anche solamente per far sì che il visitatore si senta parte integrante del sito e vi ritorni. Per fare questa e tante altre operazioni, la progettazione di un sito Web deve prevedere l'utilizzo di un database.
La scelta del Db da utilizzare (Oracle, SQL Server, MySQL e tanti altri) dipende dalle nostre conoscenze e soprattutto da quali tecnologie sono supportate dal server che ospita il sito Web.
Una volta scelto il Db da utilizzare passiamo a configurare Tomcat in modo da permettere la connessione al Db. Per fare ciò si utilizza il file server.xml, presente nella cartella <Tomcat_Home>/conf
. In questo file, all'interno del tag <HOST ...>
, va inserita la seguente porzione di codice che definisce il cosiddetto Context. Il codice che vi forniamo è stato realizzato per garantire una connessione ad un database Oracle.
<Context path="/DBTest" docBase="DBTest" debug="5" reloadable="true" crossContext="true">
<Resource name="jdbc/TestDB" auth="Container type=" javax.sql.DataSource "/>
<ResourceParams name="jdbc/TestDB">
<parameter>
<name>driverClassName</name>
<value>oracle.jdbc.driver.OracleDriver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:oracle:thin:MySchema@localhost:1521:ORCL</value>
</parameter>
<parameter>
<name>username</name>
<value>cncWeb</value>
</parameter>
<parameter>
<name>password</name>
<value>cncWeb</value>
</parameter>
</ResourceParams>
</Context>
Il tag <Context path="/DBTest" docBase="/DBTest"…>
definisce un contesto per la Web application DBTest la quale sarà localizzata nella cartella /DBTest
all'interno della cartella WebApps e risponderà all'URL http://127.0.0.1:8080/DBTest. Poiché la connessione viene definita all'interno di questo contesto, essa sarà visibile solamente da questa applicazione. Così facendo ogni applicazione può gestire le proprie connessioni in piena autonomia. In alternativa, per rendere la sorgente accessibile per tutte le applicazioni Web, è possibile definire la datasource all'interno del Context di default definito dal tag <DefaultContext>
.
Il successivo tag definisce il nome logico ed il tipo della risorsa:
<Resource auth="Container" name="jdbc/TestDB" type=" javax.sql.DataSource "/>
In questo caso la risorsa sarà individuata dal nome jdbc/store (il prefisso jdbc/ non è obbligatorio ma è una convenzione) ed il tipo è della classe javax.sql.DataSource
(la classe Java per la definizione dei Data Source, delle sorgenti dati).
Successivamente sono indicati tutti i parametri necessari per la connessione:
La factory di connessione che specifica il costruttore per le connessioni:
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory </value>
</parameter>
Il nome del driver da utilizzare:
<parameter>
<name>driverClassName</name>
<value>oracle.jdbc.driver.OracleDriver</value>
</parameter>
Vi è poi la stringa di connessione al Db:
<parameter>
<name>url</name>
<value>jdbc:oracle:thin:MySchema@localhost:1521:ORCL</value>
</parameter>
nella quale:
MySchema
è il nome dello schema all'interno del database Oracle a cui ci vogliamo connetterelocalhost
rappresenta l'hostname dove risiede fisicamente il database1521
è la porta sulla quale la connessione verrà apertaORCL
è il SID (System Identifier) del database
Ed infine la username e la password di connessione al Db:
<parameter>
<name>username</name>
<value>cncWeb</value>
</parameter>
<parameter>
<name>password</name>
<value>cncWeb</value>
</parameter>