Conexoes com banco de dados

Galera estou precisando fazer uma conexao show aqui, atualmente uso uma classe para conexao, mais ta feio isso, quero algo mais moderno tipo uma conexao datasource, bom estou tentando fazer assim:

No meu projeto uso configuro o context.xml

<?xml version="1.0" encoding="UTF-8"?>
<Context path="/svi">
  <Resource auth="Container" 
    driverClassName="oracle.jdbc.driver.OracleDriver" 
    maxActive="20"
    maxIdle="10"
    maxWait="-1"
    name="jdbc/svi"
    username="svi"
    password="isdra2010"    
    type="javax.sql.DataSource"
    url="jdbc:oracle:thin:@100.100.100.27:1521:isdradsv"/>
</Context>

Meu web.xml

<resource-ref>
      <res-ref-name>
          jdbc/bd_teste
      </res-ref-name>
      <res-type>
          javax.sql.DataSource
      </res-type>
      <res-auth>
          Container
      </res-auth>
  </resource-ref>

Minha classe conecta

 public static Connection getConexao() throws Exception {
        Connection con = null;
        // Obtém a raiz da hierarquia de nomes
        InitialContext contexto = new InitialContext();
        // Obtém a origem dos dados
        DataSource ds = (DataSource)contexto.lookup("java:comp/env/jdbc/svi");
        // Obtém uma conexão
        con = ds.getConnection();
        // Retorna a conexão
        return con;
    }

Minha classe teste

public static void main(String args[]) throws Exception{
        
        try{
        Connection con = Conexao.getConexao();
        System.out.println("Conexao efetuada com sucesso " + con);
        }catch(Exception e){
            System.out.println("Erro ao conectar o banco" + e);
        }
    }

Tenho o jar do oracle na lib do tomcat

Mais esta dando este erro ao executar o teste

Erro ao conectar o bancojavax.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

O que esta faltando?
E a melhor maneira de fazer uma conexao?
Sera que esta faltando algum jar ou configurar algum arquivo de conf do tomcat?

Resolvido o problema esta no “Minha Classe Teste”

nunca iria funcionar com metodo “main”

fiz um servlet e tudo ok

Servlet

public class ServletConexaoJNDI extends HttpServlet {
      
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            
     
            Connection con;
            try {
                con = Conexao.getConexao();
                out.println("Conexao efetuada com sucesso " + con);
            } catch (Exception ex) {
                Logger.getLogger(ServletConexaoJNDI.class.getName()).log(Level.SEVERE, null, ex);
            }
       
        } finally { 
            out.close();
        }
    } 

    
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    } 

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }

    
    public String getServletInfo() {
        return "Short description";
    }

}