Announcement

Collapse
No announcement yet.

JNDI Connectionpooling mit Apache Commons

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • JNDI Connectionpooling mit Apache Commons

    Hallo Liste,

    ich arbeite mit dem integrierten Tomcat4.0.4 von Netbeans3.4.1. Alles unter WinNt32.

    Als Vorlage (inspiration) verwende ich das Tomcat Buch von Roßbach (Seite 81 und folgend).
    Als Datenbank dient mir eine Oracle 8i (8.1.5) mit dem JDBC/Typ4 Treiber von Oracle.

    Erfolgreich habe ich eine Verbindung zur DB mit Tyrex herstellen können.

    Aber mit Jakarta/Commons habe ich immer Exceptions bekommen.

    Mit der VM 1.4.1 von Sun habe ich folgende Exception bekommen:
    <PRE>
    org.apache.commons.dbcp.DbcpException: java.sql.SQLException: Ungültige Argumente in Aufruf
    at org.apache.commons.dbcp.DriverConnectionFactory.cr eateConnection(DriverConnectionFactory.java:85)
    at org.apache.commons.dbcp.PoolableConnectionFactory. makeObject(PoolableConnectionFactory.java:184)
    at org.apache.commons.pool.impl.GenericObjectPool.bor rowObject(Unknown Source)
    at org.apache.commons.dbcp.AbandonedObjectPool.borrow Object(AbandonedObjectPool.java:117)
    at org.apache.commons.dbcp.PoolingDataSource.getConne ction(PoolingDataSource.java:110)
    at org.apache.commons.dbcp.BasicDataSource.getConnect ion(BasicDataSource.java:312)
    at HotelDescriptiveContentNotify.doGet(HotelDescripti veContentNotify.java:96)
    .....
    </PRE>

    Ich hab mir dann den Source von Commons angeschaut und gesehen, daß das Interface von
    ResultSet von 1.3 implementiert wurde und in 1.4 Erweiterungen vorgenommen wurden.

    Also habe ich auf 1.3.1 gewechselt und habe dann folgende Meldung bekommen:
    <PRE>
    java.lang.ClassCastException: org.apache.commons.dbcp.BasicDataSource
    at HotelDescriptiveContentNotify.doGet(HotelDescripti veContentNotify.java:95)
    </PRE>

    Der Code im Servlet sieht folgend aus:
    <PRE>
    Context initCtx = new InitialContext();
    Context envCtx = (Context) initCtx.lookup("java:comp/env");
    DataSource ds = (DataSource)envCtx.lookup("jdbc/icweb");
    conn = ds.getConnection();
    </PRE>

    Die config von Tomcat web.xml:
    <PRE>
    <resource-ref>
    <description>test</description>
    <res-ref-name>jdbc/icweb</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
    </resource-ref>
    </PRE>

    und in server.xml:
    <PRE>
    <Resource name="jdbc/icweb" auth="Container" type="javax.sql.DataSource"/>

    <ResourceParams name="jdbc/icweb">
    <parameter>
    <name>factory</name>
    <value>org.apache.commons.dbcp.BasicDataSourceFact ory</value>
    </parameter>

    <parameter>
    <name>maxActive</name>
    <value>20</value>
    </parameter>
    <parameter>
    <name>validationQuery</name>
    <value>SELECT 1 FROM DUAL</value>
    </parameter>

    <parameter>
    <name>user</name>
    <value>xxxxxx</value>
    </parameter>
    <parameter>
    <name>password</name>
    <value>yyyyyyy</value>
    </parameter>
    <parameter>
    <name>driverClassName</name>
    <value>oracle.jdbc.driver.OracleDriver</value>
    </parameter>
    <parameter>
    <name>url</name>
    <value>jdbcracle:thin:@mydb:1521rcl</value>
    </parameter>

    </ResourceParams>
    </PRE>

    Bin für jeden Tip dankbar

    Dietmar
Working...
X