Tomcat Pool Conexões: initContext.lookup("java:/comp/env/")

Bom dia a todos.
Estou tendo problemas em codificar minha classe para retornar a conexão pelo Pool do Tomcat 6.

Configurei o context.xml, web.xml tudo certinho. Consigo acessar minha base de dados pelo exemplo abaixo:

<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<sql:query var="rs" dataSource="jdbc/ConexaoIntercambio">
select per_codigo_perfil, per_descricao from int_perfis
</sql:query>

<html>
  <head>
    <title>DB Test</title>
  </head>
  <body>

  <h2>Results</h2>
  
<c:forEach var="row" items="${rs.rows}">
    Foo ${row.PER_CODIGO_PERFIL}<br/>
    Bar ${row.PER_DESCRICAO}<br/>
</c:forEach>

  </body>
</html>

Mas não consigo acessar pelo seguinte código:

package conexao;

import java.sql.SQLException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import oracle.jdbc.driver.OracleConnection;
import sun.jdbc.odbc.ee.DataSource;


public class Conexao {

	public static void main(String[] args) throws NamingException, SQLException {
		Context initContext = new InitialContext();
		Context envContext  = (Context)initContext.lookup("java:/comp/env/");
		DataSource ds = (DataSource)envContext.lookup("jdbc/ConexaoIntercambio");  
		OracleConnection conexao = (OracleConnection) ds.getConnection();  
	}
}

A exception ocorre na linha

Context envContext  = (Context)initContext.lookup("java:/comp/env/");

Exception:

Exception in thread "main" javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial
	at javax.naming.spi.NamingManager.getInitialContext(Unknown Source)
	at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source)
	at javax.naming.InitialContext.getURLOrDefaultInitCtx(Unknown Source)
	at javax.naming.InitialContext.lookup(Unknown Source)
	at conexao.Conexao.main(Conexao.java:22)

Alguma dica?

Como está o seu web.xml?

Olá Rafael

Eu estava pesquisando até quase neste instante e li que isso só iria funcionar se eu utilizasse o código dentro de uma servlet, por exemplo, pois de outro jeito eu não conseguiria acessar o context oferecido pelo Tomcat.

Eu conseguiria acessar essas informações a partir de uma classe comum? Já estou dando uma estudada no C3P0 caso não dê certo.

Abraço a todos.

Na verdade é via JNDI, ou seja, o Tomcat disponibiliza o contexto na árvore JNDI e você pode chamar esse contexto em qualquer classe.

Para isso a classe deve estar no contexto do Tomcat.