Conexão com banco Oracle via Data Source - erro

Olá galera do fórum, boa tarde a todos…

Seguinte …

Estou tentando criar uma Connection Factory com o Oracle, porém estou recebendo uma Exception um tanto quanto estranha (pra mim).

Bom vamos lá…

Estou utilizando tomcat5.0, Oracle 9i, java 1.4.2, struts.

O que fiz para tentar uma conexao passo a passo:

  1. Segui o site na referencia do Oracle.http://tomcat.apache.org/tomcat-5.0-doc/jndi-datasource-examples-howto.html

vejam meus arquivos como ficaram:

server.xml

[code]

			<Logger className="org.apache.catalina.logger.FileLogger"
        		prefix="localhost_ga_log." suffix=".txt"
         			timestamp="true"/>

			<Resource name="jdbc/OracleAmbientalDB"
          		auth="Container"
          	 	type="javax.sql.DataSource"/>

			<ResourceParams name="jdbc/OracleAmbientalDB">
				<parameter>
  					<name>factory</name>
  					<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
				</parameter>


				<parameter>
   					<name>driverClassName</name>
   					<value>oracle.jdbc.driver.OracleDriver</value>
				</parameter>
		
				
			
				
			
				<parameter>
  					<name>maxWait</name>
  					<value>-1</value>
				</parameter>


				<parameter>
 					<name>username</name>
 					<value>ga</value>
				</parameter>
				<parameter>
 					<name>password</name>
 					<value>ga</value>
				</parameter>

				<parameter>
  					<name>url</name>
  					<value>jdbc:oracle:thin:@192.168.0.2:1521:desenv</value>
				</parameter>

				
    			<parameter>
          			<name>removeAbandoned</name>
          			<value>true</value>
        		</parameter>

				<parameter>
          			<name>removeAbandonedTimeout</name>
          			<value>60</value>
        		</parameter>


				<parameter>
          			<name>logAbandoned</name>
          			<value>true</value>
        		</parameter>
			</ResourceParams>
		</Context>[/code]

web.xml

<resource-ref> <description>Oracle Datasource</description> <res-ref-name>jdbc/OracleAmbientalDB</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref>

Classe para testar o que fiz: ConnectionFactory.java

[code]import java.sql.Connection;
import java.sql.SQLException;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

public class ConnectionFactory {

private static Connection conn;

public static Connection getConnection(){
    try {
        Context initContext = new InitialContext();
        Context envContext  = (Context)initContext.lookup("java:/comp/env"); // ESSA É LINHA 18!!!
        DataSource ds = (DataSource)envContext.lookup("jdbc/OracleAmbientalDB");
        conn = ds.getConnection();
    }catch (NamingException ne){
        ne.printStackTrace();
    }catch (SQLException se){
        se.printStackTrace();
    }

    return conn;
    
}

public static void main(String[] args) {
    getConnection();
}

}[/code]

Ai quando executo a classe ConnectionFactory, é lançada a seguinte exception…

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(NamingManager.java:640) at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:243) at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:280) at javax.naming.InitialContext.lookup(InitialContext.java:347) at br.com.gaea.util.ConnectionFactory.getConnection(ConnectionFactory.java:18) - ////Esta marcada acima qual é !! at br.com.gaea.util.ConnectionFactory.main(ConnectionFactory.java:32)

Alguem pode me ajudar …

Obrigado …

Guilherme

public static Connection getConnection(){
         try {
             Context initContext = new InitialContext();
             DataSource ds = (DataSource)envContext.lookup("jdbc/OracleAmbientalDB");
             conn = ds.getConnection();
         }catch (NamingException ne){
             ne.printStackTrace();
         }catch (SQLException se){
             se.printStackTrace();
         }
 
         return conn;
         
     }

frodrigues,

Obrigado pela ajuda :wink:… mas mesmo assim ainda não está funcionando …
:cry:
Guilherme

perai, você tá tentando pegar essas conexão rodando essa main aí ou esse código tá sendo chamado por um servlet rodando no application server ?

Aqui funciona assim:
http://tomcat.apache.org/tomcat-5.0-doc/jndi-datasource-examples-howto.html

Boa sorte! :thumbup:

Post 10/04/2007 16:58:06 Assunto: Re:Conexão com banco Oracle via Data Source - erro
perai, você tá tentando pegar essas conexão rodando essa main aí ou esse código tá sendo chamado por um servlet rodando no application server ?

Isto esta Correto…se vc estiver tentando acessar via MAIN NAOP VAI FUNCIONAR…
TESTE VIA UM SERVLET

PU ACTION DO STRUTS
…SEI LA…ALGUM FRAMEWORK Q VC DEVE USAR

pelo que to vendo do stack trace:

at br.com.gaea.util.ConnectionFactory.main(ConnectionFactory.java:32)

Você tá rodando a main direto, esse método getConnectino tem que ser chamado por algupem que esteja rodando no contexto que você configurou o datasource.

[]´s

Rafaelprp, frodrigues

Estou tentando direto do main … hehehhe …

Faço um servlet pra testar a conexão entao …???

valeu rapaziada !

Isto Mesmo…pois no Main…ele nao vai acessar seu aplication server…
testa num servlet

que vai funcionar…falow

Cara, se quiser pode dar uma olhada no site do spring framework q ele tem um frameworkzinho que cria um initialcontext e você pode colocar datasources, etc…
Gosto de utilizar ele pra fazer testes com o jUnit.

[]´s

frodrigues,

testei conforme o site acima, usando jstl mesmo … funcionou …
puts eh boaida isso … só tava testando em local errado !!! =]
obrigado !!!

=========================================

Rafaelprp

vou olhar sim … vou usar spring no projeto !!! =]

valeu pelas dicas cara.

Valeu Galera