Simple-JNDI, una implementación de JNDI sencilla

14/11/2006

JNDI
A menudo nos encontramos con que queremos acceder a un origen de datos JNDI desde una aplicación JSP que ejecutamos (generalmente en desarrollo) en un contenedor de apliciones que no soporta JNDI (ya que a un contenedor de servlets no se le exige dicho soporte, solamente está exigido en los denominados “servidores de aplicaciones”, que además deben soportar EJBs). Por ejemplo, esto nos ocurre si desplegamos nuestra aplicación en Jetty.

Para solucionar esto, y poder tener un código independiente del servidor donde despleguemos nuestro módulo web, tenemos la librería Simple-JNDI.

Los pasos a seguir para utilizarla son:

  • Descargamos la librería:
    wget http://dist.osjava.org/releases/official/simple-jndi/simple-jndi-0.11.1.zip
  • Descomprimimos el archivo:
    unzip simple-jndi-0.11.1.zip
  • Ahora tenemos que añadir la librería “simple-jndi-0.11.1.jar” que acabamos de descomprimir al ClassPath de arranque de nuestro servidor.
  • Registramos la librería como proveedor JNDI, para lo cual creamos el archivo “jndi.properties” con el siguiente contenido:

    java.naming.factory.initial=org.osjava.sj.SimpleContextFactory
    org.osjava.sj.root=file:///home/rubensa/simple-jndi/config/
    org.osjava.sj.delimiter=/

    (donde “/home/rubensa/simple-jndi/config/” es el directorio en el que estableceremos la configuración de nuestros orígenes de datos)

    Y también lo añadimos al ClassPath.

Ahora supongamos que nuestra aplicación declara en el archivo “web.xml” que va a hacer uso del siguiente origen de datos;

<resource-ref>
<description>Mi Origen de Datos</description>
<res-ref-name>jdbc/datos</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>

Crearemos un archivo llamado “datos.properties” en home/rubensa/simple-jndi/config/jdbc con el siguiente contenido:

type=javax.sql.DataSource
driver=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@servidor:1521:SID
user=usuario
password=clave

NOTA: También será necesario que en el ClassPath se encuentren las librerías commons-collections-2.1.jar, commons-dbcp-1.1.jar, commons-pool-1.1.jar, exigidas por simple-jndi-0.11.1.jar, y por supuesto la librería del driver de base de datos que estemos configurando en el archivo .properties (en el ejemplo sería ojdbc-1.4.jar por tratarse de Oracle).

One Response to “Simple-JNDI, una implementación de JNDI sencilla”

  1. jorge Says:

    Hola, para poder hacer esto en tomcat seria igual? necesito tambien las librerias en el servidor? No puedo meterlas en mi proyecto netbeans y que no haga falta configurarlas en el servidor?

    Mi cometido es el siguiente, yo me he creado mi jndi con netbeans y mi pool de conexiones pero quiero que cuando yo pase la aplicación a otro servidor no haya que configurar nada, y mi idea era que el pool de conexiones jndi se pudiera parametrizar para cambiar la base de datos desde un fichero de propiedades, parece que con lo que comentas se puede, pero en tomcat seria igual? y podria evitar la configuración de servidor?

    Un saludo y gracias de antemano.


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: