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.[url]http://tomcat.apache.org/tomcat-5.0-doc/jndi-datasource-examples-howto.html[/url]
vejam meus arquivos como ficaram:
server.xml<Context path="/ga" reloadable="true" docBase="C:\work\ga" workDir="C:\work\ga\work"
debug="5" crossContext="true">
<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>
<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>
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();
}
}
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
… mas mesmo assim ainda não está funcionando …