My factory:
import org.apache.commons.dbcp.BasicDataSource;
import org.apache.commons.dbcp.BasicDataSourceFactory;
public class MyDataSourceFactory extends BasicDataSourceFactory
{
public Object getObjectInstance(
Object obj,
Name name,
Context nameCtx,
Hashtable environment)
throws Exception
{
BasicDataSource basicDataSource =
(BasicDataSource) super.getObjectInstance(
obj,
name,
nameCtx,
environment);
if ((obj == null) || !(obj instanceof Reference))
{
return (null);
}
Reference ref = (Reference) obj;
if (!"javax.sql.DataSource".equals(ref.getClassName()))
{
return (null);
}
// do some stuff here
// ...
return basicDataSource;
}
}
and of course you have to specify this factory in your context.xml (or web.xml)
Gernot
-----Urspr�ngliche Nachricht-----
Von: Dhiren Bhatia [mailto:[EMAIL PROTECTED]
Gesendet: Montag, 09. Mai 2005 19:27
An: Tomcat Users List
Betreff: Re: DBCP ClassCastException
It works if I use org.apache.tomcat.dbcp.dbcp.BasicDataSource.
I've tried adding all the commons jars to common/lib and it still doesn't
work with org.apache.commons.dbcp.BasicDataSource. How do you get it to cast
with your own resource factory? The way I see it, it should be the same
thing if you're extending from org.apache.commons.dbcp.BasicDataSource.
Just FYI...Here's what I have in commons/lib:
commons-collections-3.1.jar* log4j.jar*
commons-dbcp-1.2.1.jar* mysql-connector-java-3.1.7-bin.jar*
commons-pool-1.2.jar* naming-factory-dbcp.jar*
jasper-compiler-jdt.jar* naming-factory.jar*
jasper-compiler.jar* naming-resources.jar*
jasper-runtime.jar* servlet-api.jar*
jsp-api.jar*
On 5/9/05, Pfingstl Gernot <[EMAIL PROTECTED]> wrote:
>
> You can find org.apache.tomcat.dbcp.dbcp.BasicDataSource in
> common/lib/naming-factory-dbcp.jar.
> If you put commons-dbcp.jar, commons-pool.jar and commons-collections.jarin
> common/lib you (maybe) should be able to use
> org.apache.commons.dbcp.BasicDataSource.
> I do it in a similar way - I have my own ressource factory, which extends
> org.apache.commons.dbcp.BasicDataSourceFactory and it works in tomcat 5.5with
> the above jars.
>
> Gernot
>
> -----Urspr�ngliche Nachricht-----
> Von: Dhiren Bhatia [mailto:[EMAIL PROTECTED]
> Gesendet: Montag, 09. Mai 2005 18:47
> An: Tomcat Users List
> Betreff: Re: DBCP ClassCastException
>
> I'm using BasicDataSource because javax.sql.DataSource does not have
> methods
> to set the driver class name, url, username/pwd etc. My app needs to
> support
> different databases and the driver is loaded based on which database is
> installed.
> If I use org.apache.tomcat.dbcp.dbcp.BasicDataSource, then my code is not
> portable to JBoss/Weblogic etc right? BTW, which jar is
> org.apache.tomcat.dbcp.dbcp.BasicDataSource in?
> Thanks for your response.
> Dhiren
>
> On 5/9/05, Pfingstl Gernot <[EMAIL PROTECTED]> wrote:
> >
> > Tomcat 5.5 doesn't use commons-dbcp directly, the tomcat team took the
> > source and put it in other packages.
> > So you should use org.apache.tomcat.dbcp.dbcp.BasicDataSource instead of
> > org.apache.commons.dbcp.BasicDataSource in your source - btw why do you
> > cast to BasicDataSource, you can use javax.sql.DataSource?
> >
> > Gernot
> >
> > -----Urspr�ngliche Nachricht-----
> > Von: Dhiren Bhatia [mailto:[EMAIL PROTECTED]
> > Gesendet: Montag, 09. Mai 2005 17:19
> > An: Tomcat Users List
> > Betreff: Re: DBCP ClassCastException
> >
> >
> > Hi Lutz,
> > I changed the Resource tag definition to:
> > <Resource name="jdbc/myserver" auth="Container" type="
> javax.sql.DataSource
> > "
> > maxActive="100" maxIdle="30" maxWait="10000"
> > driverClassName="com.mysql.jdbc.Driver"/>
> > I'm setting the username/password and jdbcurl using code.
> > I still get the same ClassCastException. Is Tomcat instantiating the
> > correct DataSourceFactory?
> > I have the commons-dbcp-1.2.1.jar in my ${TOMCAT_HOME}/common/lib
> > Thanks,
> > Dhiren
> >
> > On 5/8/05, Lutz Zetzsche <[EMAIL PROTECTED]> wrote:
> > >
> > > Hi Dhiren,
> > >
> > > Am Montag, 9. Mai 2005 07:36 schrieb Dhiren Bhatia:
> > > > Hi all,
> > > >
> > > > I'm getting a the following ClassCastException running Tomcat 5.5.9
> > > > with MySQL
> > > >
> > > > java.lang.ClassCastException:
> > > > org.apache.tomcat.dbcp.dbcp.BasicDataSource
> > > >
> > > > Here's the relevant code:
> > > > *Java code:*
> > > > org.apache.commons.dbcp.BasicDataSource datasource;
> > > >
> > > > datasource =
> > > > (BasicDataSource)ctx.lookup("java:comp/env/jdbc/myserver");
> > > >
> > > > *web.xml*
> > > > <resource-ref>
> > > > <description>DB Connection</description>
> > > > <res-ref-name>jdbc/myserver</res-ref-name>
> > > > <res-type>javax.sql.DataSource</res-type>
> > > > <res-auth>Container</res-auth>
> > > > </resource-ref>
> > > > *server.xml*
> > > > *....*
> > > > <ResourceParams name="jdbc/myserver">
> > > > <parameter>
> > > > <name>factory</name>
> > > > <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
> > > > </parameter>
> > > > *...*
> > > >
> > > >
> > > > This same code works in Tomcat 5.0.30.
> > > >
> > > > Has anything changed? Am I missing something?
> > >
> > > Yes. The syntax for the Resource tag in the server.xml has changed.
> The
> > > resource parameters are no longer defined in tags nested into the
> > > Resource tag, but in attributes of the tag. This is an example from
> the
> > > Tomcat 5.5 documentation:
> > >
> > > <Resource name="jdbc/TestDB" auth="Container"
> > > type="javax.sql.DataSource" maxActive="100" maxIdle="30"
> > > maxWait="10000" username="javauser" password="javadude"
> > > driverClassName="com.mysql.jdbc.Driver"
> > > url="jdbc:mysql://localhost:3306/javatest?autoReconnect=true"/>
> > >
> > >
> > >
> >
> http://jakarta.apache.org/tomcat/tomcat-5.5-doc/jndi-datasource-examples-howto.html
> > >
> > > Best wishes,
> > >
> > > Lutz
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > For additional commands, e-mail: [EMAIL PROTECTED]
> > >
> > >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]