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:
- 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