Sun bundles Tomcat 4 with Solaris 9 and i'm having problems getting the 
datasource to work

i am trying to connection to a Sybase ASE database and so i went to 
Sybase's website for help and they have jConnect 5.5 (a .jar file that i 
guess contains their driver)

i copied the jConnect5.5 jconn2.jar file to /usr/apache/tomcat/common/lib

i pasted the new context (for connecting to the database that was provided 
by Sybase) into the server.xml file (see this context below) in 
/var/apache/tomcat/conf

the directory tree for the webapps looks like so:
/var/apache/tomcat/webapps/sybase/jsp/sybase.jsp
/var/apache/tomcat/webapps/sybase/WEB-INF/web.xml
/var/apache/tomcat/webapps/sybase/WEB-INF/jsp/

i then stopped and then re-started apache

my sybase.jsp file looks like this:
------------------------------
<%@ page import="java.sql.*" %>
<%@ page import="javax.sql.*" %>
<%@ page import="javax.naming.*" %>
<%@ page import="java.util.*" %>

<html>
<head> <title> Testing Sybase DataSource </title> </head>

<body bgcolor="white">
<font size=4>

<h3> Start of Test </h3>

<%

String s = "java:comp/env";
String t = "jdbc/a_sybase_datasource";

InitialContext initCtx = null;
try 
{
initCtx = new InitialContext();
out.println("<p>initCtx = new InitialContext() : successful");
out.println("<BR>");
out.println( initCtx );
}
catch (Exception e) 
{
out.println("<p>initCtx = new InitialContext() : failed");
out.println("<BR>");
out.println ( e );
}

Context envCtx = null;
try 
{
envCtx = (Context) initCtx.lookup( s );
out.println("<BR>envCtx = initCtx.lookup(" + s + ") : successful");
out.println("<BR>");
out.println( envCtx );
}
catch (Exception e) 
{
out.println("<BR>envCtx = initCtx.lookup(" + s + ") : failed");
out.println ( e );
}

DataSource ds = null;

ds = null;
try 
{ 
out.println("<p>Trying ds=(DataSource)envCtx.lookup(" + t + ")");
ds = (DataSource) envCtx.lookup( t ); 
out.println("<BR>DataSource lookup apparently successful"); 
out.println("<BR>" + ds );
}
catch (Exception e)
{ 
out.println("<BR>Datasource lookup failed <BR>");
out.print( e ); 
}

if (ds == (DataSource) null) 
{
out.println("<BR>DataSource null\n"); 
}

try {

Connection conn = ds.getConnection();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select db_name()");
while (rs.next()) 
{
out.println
( "<BR>Inside fetch loop:" );
out.println
( "<BR>Value Returned from DataSource: " + 
rs.getString(1) );
} // end_while

rs.close();
stmt.close();
conn.close();
} // end_try
catch (SQLException sqe) {
out.println("<BR>Inside catch(SQLException sqe)");
out.println( sqe.getMessage() );
} // end catch SQLException
catch (Exception e) { 
out.println("<BR>Inside catch(Exception e)<BR>");
out.println(e.getMessage()); 
out.print( e );
} // end catch Exception
%>

<p>
<h3> End of Test </h3>
</font>
</body>
</html>
------------------------------






my web.xml file looks like this:
------------------------------
<?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>

<welcome-file-list>
<welcome-file> /jsp/sybase.jsp </welcome-file>
</welcome-file-list>

<!-- for using dscp -->

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

</web-app>
------------------------------







context in server.xml
------------------------------
<!-- Sybase Example Context - dscp example -->
 
<Context path="/sybase"
docBase="sybase"
debug="5"
reloadable="true"
crossContext="true">
 
<Logger className="org.apache.catalina.logger.FileLogger"
prefix="localhost_Sybase.log."
suffix=".txt"
timestamp="true"/>
 
<Resource name="jdbc/a_sybase_datasource"
auth="Container"
type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/a_sybase_datasource">
 
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
 
<parameter>
<name>maxActive</name>
<value>10</value>
</parameter>
 
<parameter>
<name>maxIdle</name>
<value>5</value>
</parameter>
 
<parameter>
<name>maxWait</name>
<value>10000</value>
</parameter>
 
<parameter>
<name>driverClassName</name>
<value>com.sybase.jdbc2.jdbc.SybDriver</value>
</parameter>
 
<parameter>
<name>url</name>
<value>jdbc:sybase:Tds:10.34.34.34:4300/mydb?JCONNECT_VERSION=6</value>
</parameter>
 
<parameter>
<name>username</name>
<value>myuser</value>
</parameter>
 
<parameter>
<name>password</name>
<value>mypasswd</value>
</parameter>
 
</ResourceParams>
</Context>
 
<!-- END Sybase Example Context - dscp example -->
-------------------------------------





when i call /var/apache/tomcat/webapps/sybase/jsp/sybase.jsp (it's a 
connection test file that Sybase provides) through 
http://hostname:port/sybase/jsp/sybase.jsp
i get this error:


-------------------------------------
Start of Test 
initCtx = new InitialContext() : successful 
[EMAIL PROTECTED] 
envCtx = initCtx.lookup(java:comp/env) : successful 
[EMAIL PROTECTED] 
Trying ds=(DataSource)envCtx.lookup(jdbc/a_sybase_datasource) 
Datasource lookup failed 
javax.naming.NamingException: Cannot create resource instance
DataSource null 
Inside catch(Exception e)
null java.lang.NullPointerException 
End of Test 
-------------------------------------


appears that in sybase.jsp, the line:
ds = (DataSource) envCtx.lookup( t );
fails ... any ideas, anyone?



Thanks,

Alan Czajkowski
-------------------------------------
Database Administrator
BMO Financial Group
Decision Support Services
3300 Bloor Street West
14th Floor, West Tower
Toronto, Ontario, M8X 2X2
Tel: 416.232.8736
-------------------------------------

Reply via email to