I am trying to configure JNDI to access Oracle 9i R1,
according to JNDI Datasource HOW-TO,
however I am not obtaining a lot of success when I go
to establish the connection.
In the end of this e-mail I will list some fragments of the configuration of
server.xml,
web.xml and of my class java that I am using to accomplish the connection test.
Files in $CATALINA_HOME/common/lib
[EMAIL PROTECTED]:/usr/local/jakarta-tomcat-4.1.18/common/lib > ls
activation.jar commons-collections.jar commons-pool.jar jdbc2_0-stdext.jar
mail.jar naming-resources.jar
ant.jar commons-dbcp.jar jasper-compiler.jar jndi.jar
naming-common.jar ojdbc14.jar
classes12.jar commons-logging-api.jar jasper-runtime.jar jta.jar
naming-factory.jar servlet.jar
The reference $CATALINA_HOME/common/lib/*. jar is in CLASSPATH of the system
Fragment of configuration of server.xml
<Host name="aaa.aa.aa" debug="0" appBase="/web"
unpackWARs="true" autoDeploy="true">
<Logger className="org.apache.catalina.logger.FileLogger"
directory="logs" prefix="localhost_log." suffix=".txt"
timestamp="true"/>
<Context path="" docBase="/web/ged" debug="0"
reloadable="true" crossContext="true">
<Logger className="org.apache.catalina.logger.FileLogger"
prefix="localhost_examples_log." suffix=".txt"
timestamp="true"/>
<Ejb name="ejb/EmplRecord" type="Entity"
home="com.wombat.empl.EmployeeRecordHome"
remote="com.wombat.empl.EmployeeRecord"/>
<Environment name="maxExemptions" type="java.lang.Integer"
value="15"/>
<Parameter name="context.param.name" value="context.param.value"
override="false"/>
<Resource name="jdbc/EmployeeAppDb" auth="SERVLET"
type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/EmployeeAppDb">
<parameter><name>username</name><value>sa</value></parameter>
<parameter><name>password</name><value></value></parameter>
<parameter><name>driverClassName</name>
<value>org.hsql.jdbcDriver</value></parameter>
<parameter><name>url</name>
<value>jdbc:HypersonicSQL:database</value></parameter>
</ResourceParams>
<Resource name="jdbc/sged" auth="Container"
type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/sged">
<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>url</name>
<value>jdbc:oracle:[EMAIL PROTECTED]:1521:XXX</value></parameter>
<parameter><name>username</name><value>scott</value></parameter>
<parameter><name>password</name><value>jjjjj</value></parameter>
<parameter><name>maxActive</name><value>20</value></parameter>
<parameter><name>maxIdle</name><value>10</value></parameter>
<parameter><name>maxWait</name><value>10000</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>
<Resource name="mail/Session" auth="Container"
type="javax.mail.Session"/>
<ResourceParams name="mail/Session">
<parameter>
<name>mail.smtp.host</name>
<value>localhost</value>
</parameter>
</ResourceParams>
<ResourceLink name="linkToGlobalResource"
global="simpleValue"
type="java.lang.Integer"/>
</Context>
</Host>
File /web/WEB-INF/web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<description>Oracle Database Connection</description>
<resource-ref>
<description>Pool</description>
<res-ref-name>jdbc/sged</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.htm</welcome-file>
</welcome-file-list>
</web-app>
Method of the class java that makes the connection test
public String obtem_dados()
{
Connection conn = null;
Statement stmt = null;
ResultSet rset = null;
resultado = new StringBuffer();
try
{
Context initContext = new InitialContext();
Context envContext =
(Context)initContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/sged");
conn = ds.getConnection();
stmt = conn.createStatement();
rset = stmt.executeQuery("SELECT COUNT(*) FROM V$SESSION");
if (rset.next())
{
resultado.append("N�mero de Conex�es -> ");
resultado.append(rset.getString(1));
resultado.append("<br>");
}
}
catch (java.lang.Exception e)
{
resultado.append(e.getMessage());
resultado.append("<br>");
}
finally
{
if (conn != null)
{
try
{
conn.close();
}
catch (java.lang.Exception ex)
{
resultado.append(ex.getMessage());
resultado.append("<br>");
}
}
}
return ((resultado.toString()));
}
Ao executar o m�todo anterior, recebo a seguinte mensagem de erro:
Cannot create JDBC driver of class 'oracle.jdbc.driver.OracleDriver' for connect URL
'jdbc:oracle:[EMAIL PROTECTED]:1521:GED'
Algu�m tem alguma id�ia do que pode estar acontecendo?
Excuse me for the gigantic message.
I thank in advance.
Sebasti�o Carlos Santos
Oracle Database Administrator
Universidade Federal de Uberl�ndia - UFU
Gratifica��o de Est�mulo � Doc�ncia - GED