You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Pranas <ba...@danet.lt> on 2003/09/09 15:09:28 UTC

SAP DB JNDI Datasource

Has someone tried to use SAP DB JNDI Datasource?


I was not able to create it according manual "JNDI Datasource HOW-TO".


Environment:
tomcat-4.1.27 with j2sdk1.4.1_02 on Win 2000.
1. JDBC driver in $CATALINA_HOME/common/lib/sapdbc.jar
2. server.xml configuration:
<Context path="/Test" docBase="Test" debug="5" reloadable="true"
crossContext="true">
<Logger className="org.apache.catalina.logger.FileLogger"
prefix="localhost_TestDB_log." suffix=".txt" timestamp="true"/>
<Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/TestDB">
<parameter> <name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value> </parameter>
<parameter> <name>maxActive</name> <value>45</value> </parameter>
<parameter> <name>maxIdle</name> <value>5</value> </parameter>
<parameter> <name>maxWait</name> <value>15000</value> </parameter>
<parameter> <name>username</name> <value>DBA</value> </parameter>
<parameter> <name>password</name> <value>PASSWORD</value> </parameter>
<parameter> <name>driverClassName</name>
<value>com.sap.dbtech.jdbc.DriverSapDB</value> </parameter>
<parameter> <name>url</name> <value>jdbc:sapdb:///TestDB</value>
</parameter>
</ResourceParams>
</Context>

3. web.xml configuration:
<web-app>
...
<servlet>
<servlet-name>Test</servlet-name>
<servlet-class>Test</servlet-class>
</servlet>
...
<servlet-mapping>
<servlet-name>Test</servlet-name>
<url-pattern>/Test</url-pattern>
</servlet-mapping>
...
<resource-ref>
<description>Test DB Connection</description>
<res-ref-name>jdbc/TestDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
...
</web-app>

4. Test Servlet:
...
Context initContext = new InitialContext();
if (initContext != null) {
    out.println("<p>OK. Got InitialContext()</p>");
} // if

Context envContext = (Context)initContext.lookup("java:/comp/env");
if (envContext != null) {
    out.println("<p>OK. Got initContext.lookup(\"java:/comp/env\")</p>");
} // if

DataSource ds = (DataSource) envContext.lookup("jdbc/TestDB");
if (ds != null) {
    out.println("<p>OK. Got envContext.lookup(\"jdbc/TestDB\")</p>");
} // if

Connection con = ds.getConnection();
if (con != null) {
        out.println("<p>OK. ds.getConnection()</p>");
} // if

} catch (Exception e) {
    out.println("<p>");
    e.printStackTrace(out);
    out.println("</p>");
} // catch
...
Result:
OK. Got InitialContext()
OK. Got initContext.lookup("java:/comp/env")
OK. Got envContext.lookup("jdbc/TestDB")
java.sql.SQLException: Cannot load JDBC driver class 'null' at
org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.jav
a:529) at
org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:3
12) at Test.processRequest(Test.java:79) at Test.doGet(Test.java:104) at
javax.servlet.http.HttpServlet.service(HttpServlet.java:740) at
javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:247) at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:193) at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.ja
va:256)
...
Is it BUG?! Has some ideas how to handle JNDI Datasource with SAP DB?

Pranas