domingo, septiembre 09, 2007

Configurar el pool de datos de Tomcat

En varias ocasiones he tenido problemas a la hora de configurar una aplicación para que utilizase el pool de conexiones de un servidor de aplicaciones (normalmente Tomcat). Por ello, voy a exponer los pasos que se deben dar para poder usar esta característica.

El primer paso es configurar adecuadamente el contexto. El contexto (siempre hablando de Tomcat) se puede configurar de varios modos. El primero (nada aconsejable) es editar el fichero sever.xml e insertar el elemento <context></context> dentro de <host>. No es el mejor método, ya que no siempre vamos a tener acceso a ese fichero... además de la necesidad de parar el servidor para que los cambios surtan efecto.

Yo uso otro método. Antes de crear el fichero war con la aplicación, creo un fichero llamado context.xml dentro de una carpeta META-INF. En este fichero pongo lo siguiente:

<context path="/nombreAplicacion">
<resource auth="Container"
driverclassname="com.mysql.jdbc.Driver"
maxactive="100"
maxidle="30"
maxwait="10000"
name="jdbc/NombreAplicacionDS"
password="password"
type="javax.sql.DataSource"
url="jdbc:mysql://localhost:3306/aplicacionBBDD?autoReconnect=true"
username="user">
</resource>
</context>

Como puedes ver, declaro un nuevo recurso para la aplicación llamado "jdbc/NombreAplicacionDS". Este nombre es muy importante, ya que ahora lo usaré como referencia web.xml. Ahora en el fichero web.xml, añado un elemento nuevo (asegurate de cumplir con el orden dentro de los elementos) dentro del elemento web-app:

<resource-ref>
<res-ref-name>jdbc/NombreAplicacionDS</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>

Una vez incluido este elemento, ya sólo queda usarlo desde el código:

Context contexto = new InitialContext();
DataSource ds = (DataSource)ctx.lookup(
"java:comp/env/jdbc/NombreAplicacionDS");
if (ds != null) {
Connection conexion = ds.getConnection();
}

Cuidado al crear la cadena para el lookup, si lo haces mediante variables (recomendable), la cadena debería ser "java:comp/env/" para que el ejemplo funcione.

Si ahora despliegas el war en un Tomcat (Ver. 5.5), verás como bajo la carpeta $HOME_TOMCAT$/conf/Catalina/localhost se habrá creado un fichero con extensión .xml y con el mismo nombre que nuestra aplicación. Si lo abres, verás el mismo contenido que introducimos en el fichero context.xml

Espero que os aproveche.

P.D.
Aseguraros que los drivers de la bb.dd. estén sólo en un único sitio. Este debe ser %TOMCAT_HOME%/common/lib. Si los tenéis en el lib del proyecto y en el lib del Tomcat (o cualquier otro sitio), fallará.

martes, abril 10, 2007

Xgl en Ubuntu 6.10

Por fin. He conseguido que Xgl funcione en mi Ubuntu. Lo he intentado varias veces, siguiendo complicados tutoriales que no me llevaban a ninguna parte y que en algunas ocasiones me han obligado a reinstalar el sistema.

Sin embargo, esta mañana, volviendo sobre el tema, estuve buscando en Ubuntu-es y encontré una referencia nueva. Me decidí a probar por enésima vez y... ¡¡funcionó, a la primera y en menos de cinco minutos!!.

En primer lugar, decir que el tutorial se basa en una máquina con Ubunty Egdy Eft y una tarjeta gráfica ATI (yo tengo una ATI Radeon Mobility 9700, con 128 megas). Se usa Beryl como gestor de ventanas, en lugar de Compiz.

Si tienes un Ubuntu 6.10 y una tarjeta gráfica ATI, te recomiento que sigas las sencillas instrucciones que se exponen. Aquí va la referencia:

3D Desktop (Beryl and Xgl) on Ubuntu Edgy Eft with ATI card

Saludos,