You are on page 1of 7

Configurar Tomcat/Ubuntu para que use

Mysql
Tabla de contenidos
[esconder]

1 Dejar que Tomcat controle las conexiones con base de datos


2 Poner el driver de MySQL en su sitio
3 Dar de alta la base de datos
4 Dar permisos a la aplicacin para acceder a la base de datos
5 Configurar la aplicacin para acceder a la base de datos
6 Hacer el cdigo

[editar]

Dejar que Tomcat controle las conexiones con base


de datos
Cuando hacemos una aplicacin web con Tomcat, nuestro cdigo java/jsp puede
acceder directamente a la base de datos, creando sus propias Connection a
partir del driver de MySQL. Sin embargo, tenemos una forma ms elegante de
hacer estas cosas. Podemos configurar Tomcat para que tenga acceso a la base
de datos y que las aplicaciones le pidan a Tomcat la conexin, sin preocuparse
del driver, base de datos, usuario ni password, etc, etc.
Esta opcin es ms elegante y eficiente por los siguientes motivos:
La aplicacin web no tiene que saber nada de la base de datos que hay
detrs. Ni la cadena de conexin, ni el usuario y password, ni siquiera qu tipo
de base de datos hay detras (MySQL, Oracle, etc). Lo nico que tiene que
saber es que hay una base de datos disponible que gestiona Tomcat y que el
nombre con el que se la debe pedir (un nombre JNDI).
Tomcat gestiona la conexin a la base de datos, metindola en un Pool de
conexiones. Esto hace ms eficiente al servidor, ya que las conexiones se
reaprovechan entre varias aplicaciones web y entre varias sesiones de la
misma aplicacin. Crear y cerrar una conexin con base de datos es un

proceso costoso y si lo hace la aplicacin cada vez que necesita hacer una
transaccin, todo el proceso es ms lento.
Veamos aqu cmo hacer accesible a Tomcat nuestra base de datos MySQL y
cmo hacer que una aplicacin web que hagamos le pida a Tomcat una conexin
con dicha base de datos.

[editar]

Poner el driver de MySQL en su sitio


Para que Tomcat tenga acceso al driver de MySQL, debemos poner el jar con el
mismo en el directorio adecuado de Tomcat. En mi caso, el driver est en el jar
mysql-connector-java-5.0.8-bin.jar y hay que situarlo en
/usr/share/tomcat5.5/common/lib.

[editar]

Dar de alta la base de datos


Ahora debemos proporcionar a Tomcat todos los datos para la conexin con la
base de datos. Para ello, editamos el fichero /etc/tomcat5.5/context.xml y
aadimos al final algo como esto
<Context path="/protocolo-pruebas" docBase="protocolo-pruebas"
debug="5" reloadable="true" crossContext="true">
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<Resource name="jdbc/PROTO_PRUEBAS"
auth="Container"
type="javax.sql.DataSource"
username="elusuario"
password="secreto"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/BASE_DATOS"
maxActive="8" maxIdle="4"/>
</Context>

En este ejemplo, la aplicacin se llamara protocolo-pruebas y el path para


acceder a ella desde el navegador ser http://localhost:8180/protocolopruebas.

El jdbc/PROTO_PRUEBAS es el nombre que hemos decidido para


referenciar nuestra conexin con la base de datos y es el nombre que debe
saber la aplicacin.
El usuario y la password sern las de acceso a la base de datos.
driverClassName es el nombre de la clase para la conexin con MySQL.
La url es la de la conexin con la base de datos.
Otra opcin para tocar este fichero, si tenemos instalada la aplicacin de
administracin de Tomcat desde navegador, es entrar en ella y en el arbol de la
izquierda buscar "Tomcat Server", "Servicio (Catalina)", "Host (localhost)",
"Context (/protocolo-pruebas)", "Recursos", "Fuentes de datos". En el panel que
sale en el lado derecho, en "acciones disponibles", podemos "crear nueva fuente
de datos" y rellenar los campos del formulario. Estos datos se escribirn en el
fichero context.xml, de forma similar al ejemplo anterior.
En el enlace tienes un video de cmo hacerlo http://www.youtube.com/watch?
v=le6zOUu4usE
[editar]

Dar permisos a la aplicacin para acceder a la base


de datos
Para que nuestra aplicacin web pueda abrir el socket con la base de datos,
debemos darle permisos. Tomcat lee los permisos de
/etc/tomcat5.5/catalina.policy, pero este fichero se regenera automticamente en
el arranque de Tomcat con la informacin que hay en los ficheros en el directorio
/etc/tomcat5.5/policy.d, as que debemos tocar en los ficheros de ah dentro, y no
directamente en catalina.policy.
En concreto, para dar permisos a nuestra aplicacin, debemos editar con
permisos de administrador el fichero /etc/tomcat5.5/policy.d/04webapps.policy. En
l, aadimos esto al final
grant codeBase "file:/var/lib/tomcat5.5/webapps/protocolo-pruebas/-" {
permission java.net.SocketPermission "localhost:3306",
"connect,resolve";
};

donde, como antes, protocolo-pruebas es el directorio donde est nuestra


aplicacin y el - es para incluir en los permisos a los ficheros en ese directorio

hacia abajo. Estamos dando permisos para abrir el puerto 3306 (el de MySQL
por defecto) en localhost.

[editar]

Configurar la aplicacin para acceder a la base de


datos
En el fichero WEB-INF/web.xml debemos poner algo como esto
<web-app>
...
<resource-ref>
<description>La base de datos</description>
<res-ref-name>jdbc/PROTO_PRUEBAS</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
...
</web-app>

En l indicamos que hay un recurso, de nombre jdbc/PROTO_PRUEBAS, que es


el nombre que dimos en el fichero context.xml, que es de tipo
javax.sql.DataSource, que es la clase java a la que pediremos la conexin con la
base de datos.

[editar]

Hacer el cdigo
Ahora slo nos queda hacer el cdigo java de nuestra aplicacin, dentro de un
Servlet, un jsp o una clase java normal ejecutada desde la aplicacin web. El
cdigo sera este
// Esta parte es fija
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
// Y aqu pedimos nuestra conexin, por su nombre
DataSource ds = (DataSource) envCtx.lookup("jdbc/PROTO_PRUEBAS");
Connection conexion = ds.getConnection();
// Aqu la transaccin con la base de datos
// Se cierra la conexin, ya que estamos en un pool de conexiones

// para dejarla libre a otros procesos.


conexion.close();

Notas sobre la instalacin y utilizacin de servidor Tomcat para la creacin de


servlets o paginas JSP.

25/8/04 - Este proceso es bastante sencillo, pero consta de una serie de pasos que se
deben realizar al pie de la letra:
a) Instalar el servidor Tomcat y alguna versin del J2SDK (se recomienda 1.4.01 o la
Enterprise Edition), indicndole el lugar donde se encuentra instalada la JVM (Java Virtual
Machine), y de preferencia, dejando como puerto el 4848 para el acceso del servidor
b) Posteriormente se procede a configurarlo en la computadora. Para esto se crea una
"variable de entorno". Si usas Windows 95/98/2000/XP, se crea modificando el archivo
autoexec.bat ubicado en c:\ (esta como archivo oculto). Su modificacin se hace
agregndole la siguiente lnea:
set classpath = "ruta"

Donde "ruta" es la ubicacin de los archivos jsp-api.jar y servlet-api.jar que se


encuentran en la carpeta: ruta_de_instalacion_del_servidor_tomcat/common/lib.
A continuacin un ejemplo de lnea a agregar al autoexec.bat, suponiendo que el servidor
tomcat se instalo en c:\archivos de programa:
SET CLASSPATH= C:\Archivos de programa\Apache Software Foundation\Tomcat 5.0\common\lib\jspapi.jar;C:\Archivos de programa\Apache Software Foundation\Tomcat 5.0\common\lib\jsp-api.jar

Recordando que tambin se le agrega al claspath la direccin del la ruta donde se


encuentra la carpeta \bin del j2sdk (compilador de java).
c) Una vez echo lo anterior, para agregar el primer servlet al sitio, busca el archivo
web.xml, el cual se encuentra en ruta_de_instalacion_del_servidor_tomcat\Apache
Software Foundation\Tomcat 5.0\webapps\ROOT\WEB-INF\ y se le agrega a la carpeta
webapps el nuevo_servlet.class (que es el resultado de la compilacion del
nuevo_servlet.java). Adems hay que aadir estas lneas al archivo web.xml
<servlet>
<servlet-name>nuevo_servlet</servlet-name>
<servlet-class>nuevo_servlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>nuevo_servlet</servlet-name>
<url-pattern>nuevo_servlet</url-pattern>
</servlet-mapping>

Pero como el archivo ya tienen escrito se acomoda de tal manera q queda asi:
<servlet>
<servlet-name>org.apache.jsp.index_jsp</servlet-name>
<servlet-class>org.apache.jsp.index_jsp</servlet-class>
</servlet>
<servlet>
<servlet-name>nuevo_servlet</servlet-name>
<servlet-class>nuevo_servlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>org.apache.jsp.index_jsp</servlet-name>
<url-pattern>/index.jsp</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>nuevo_servlet</servlet-name>
<url-pattern>nuevo_servlet</url-pattern>
</servlet-mapping>

d) Por ltimo se prueba el servlet escribiendo en el explorador


http:\\localhost:484\nuevo_servlet y listo, debera verse el resultado.

You might also like