lunes, 16 de enero de 2012

Usar JNDI en tests de jUnit

Para poder cargar el contexto y poder acceder a lo que configuremos con JNDI en jUnit definiremos el método setUp de la siguiente forma:
try {
    // Create initial context
    System.setProperty(Context.INITIAL_CONTEXT_FACTORY,
        "org.apache.naming.java.javaURLContextFactory");
    System.setProperty(Context.URL_PKG_PREFIXES, 
        "org.apache.naming");            
    InitialContext ic = new InitialContext();

    ic.createSubcontext("java:");
    ic.createSubcontext("java:/comp");
    ic.createSubcontext("java:/comp/env");
    ic.createSubcontext("java:/comp/env/jdbc");
   
    // Construct DataSource
    OracleConnectionPoolDataSource ds = new OracleConnectionPoolDataSource();
    ds.setURL("jdbc:oracle:thin:@host:port:db");
    ds.setUser("MY_USER_NAME");
    ds.setPassword("MY_USER_PASSWORD");
    
    ic.bind("java:/comp/env/jdbc/nameofmyjdbcresource", ds);
} catch (NamingException ex) {
    Logger.getLogger(MyDAOTest.class.getName()).log(Level.SEVERE, null, ex);
}
En la zona donde definimos el DataSource podremos incluir cualquier conexión a base de datos que necesitemos simplemente cambiando las clases. En el mi caso que es para Postgres la cosa quedaría así:
PGPoolingDataSource ds = new PGPoolingDataSource();
ds.setServerName("SERVER");
ds.setDatabaseName("DB_NAME");
La fuente de todo esto la extraje de: http://blogs.oracle.com/randystuph/entry/injecting_jndi_datasources_for_junit

No hay comentarios:

Publicar un comentario en la entrada