You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by VA...@LILLY.COM on 2001/08/21 00:10:04 UTC

tomcat 4 datasource casting

Hello all,

I read the great message Craig McClanahan posted in the archives  (from 
Aug 4) about how to setup and use a tomcat 4 datasource.  All has seemed 
to go pretty well, but I'm having a funny problem, which I'm not sure is a 
Tyrex problem, a Tomcat 4 problem or a Java education problem on my part 
:).  (I'm using Tomcat 4 beta 7)

When I try to get a DataSource from JNDI, I can retrieve a reference just 
fine.  The problem is that I am having trouble casting it to a 
javax.sql.DataSource.  It returns an instance of 
tyrex.jdbc.xa.EnabledDataSource.  If I try to cast to 
javax.sql.DataSource, I get a ClassCastException from the server.  I 
looked up this class in the Tyrex API docs, and it does in fact implement 
javax.sql.DataSource -- I think I should be able to cast to it because of 
that.  If I work with the tyrex implementation directly, all is ok (i.e., 
calling tyrex.jdbc.xa.EnabledDataSource.getConnection()), but I obviously 
won't want to care about the particular implementation in this case.

If it helps, here is the code I'm trying to use:

--------------------------
ctx = new InitialContext();
ds = (DataSource)ctx.lookup("java:comp/env/jdbc/lis_ds");
--------------------------

That failed, so I added this for debugging:

--------------------------
Object o = ctx.lookup("java:comp/env/jdbc/lis_ds");
if (o == null) {
   System.out.println("looked up a null object");
} else {
   System.out.println("o is of type: " + o.getClass().getName()); //<-- 
prints "tyrex.jdbc.xa.EnabledDataSource"
}
--------------------------

The exceptions I get are like this:

--------------------------
java.lang.ClassCastException: tyrex.jdbc.xa.EnabledDataSource
        at report.ReportPrefs.setDateDefaults(ReportPrefs.java:52)
        at report.ReportPrefs.<init>(ReportPrefs.java:16)
        at java.lang.Class.newInstance0(Native Method)
        at java.lang.Class.newInstance(Class.java:237)
        at java.beans.Beans.instantiate(Beans.java:207)
        at java.beans.Beans.instantiate(Beans.java:51)
........
--------------------------

Any ideas?

Thanks,
Jason Vasquez

RE: tomcat 4 datasource casting

Posted by "Rob S." <rs...@home.com>.
...and the second example for my "class-not-found" document presents itself
=)

Thanks guys!

- r

> -----Original Message-----
> From: craigmcc@sfu.ca [mailto:craigmcc@sfu.ca]On Behalf Of Craig R.
> McClanahan
> Sent: Monday, August 20, 2001 6:16 PM
> To: tomcat-user@jakarta.apache.org
> Subject: Re: tomcat 4 datasource casting
>
>
> Where do you have the jdbc2_0-stdext.jar file?  I'm betting that it needs
> to be in $CATALINA_HOME/common/lib only for this to work -- because JAR
> files here are on the class loading path for both Catalina internal
> classes and web application classes.
>
> Craig
>
>
> On Mon, 20 Aug 2001 VASQUEZ_JASON@LILLY.COM wrote:
>
> > Hello all,
> >
> > I read the great message Craig McClanahan posted in the archives  (from
> > Aug 4) about how to setup and use a tomcat 4 datasource.  All
> has seemed
> > to go pretty well, but I'm having a funny problem, which I'm
> not sure is a
> > Tyrex problem, a Tomcat 4 problem or a Java education problem
> on my part
> > :).  (I'm using Tomcat 4 beta 7)
> >
> > When I try to get a DataSource from JNDI, I can retrieve a
> reference just
> > fine.  The problem is that I am having trouble casting it to a
> > javax.sql.DataSource.  It returns an instance of
> > tyrex.jdbc.xa.EnabledDataSource.  If I try to cast to
> > javax.sql.DataSource, I get a ClassCastException from the server.  I
> > looked up this class in the Tyrex API docs, and it does in fact
> implement
> > javax.sql.DataSource -- I think I should be able to cast to it
> because of
> > that.  If I work with the tyrex implementation directly, all is
> ok (i.e.,
> > calling tyrex.jdbc.xa.EnabledDataSource.getConnection()), but I
> obviously
> > won't want to care about the particular implementation in this case.
> >
> > If it helps, here is the code I'm trying to use:
> >
> > --------------------------
> > ctx = new InitialContext();
> > ds = (DataSource)ctx.lookup("java:comp/env/jdbc/lis_ds");
> > --------------------------
> >
> > That failed, so I added this for debugging:
> >
> > --------------------------
> > Object o = ctx.lookup("java:comp/env/jdbc/lis_ds");
> > if (o == null) {
> >    System.out.println("looked up a null object");
> > } else {
> >    System.out.println("o is of type: " + o.getClass().getName()); //<--
> > prints "tyrex.jdbc.xa.EnabledDataSource"
> > }
> > --------------------------
> >
> > The exceptions I get are like this:
> >
> > --------------------------
> > java.lang.ClassCastException: tyrex.jdbc.xa.EnabledDataSource
> >         at report.ReportPrefs.setDateDefaults(ReportPrefs.java:52)
> >         at report.ReportPrefs.<init>(ReportPrefs.java:16)
> >         at java.lang.Class.newInstance0(Native Method)
> >         at java.lang.Class.newInstance(Class.java:237)
> >         at java.beans.Beans.instantiate(Beans.java:207)
> >         at java.beans.Beans.instantiate(Beans.java:51)
> > ........
> > --------------------------
> >
> > Any ideas?
> >
> > Thanks,
> > Jason Vasquez
> >
>
>


Re: tomcat 4 datasource casting

Posted by "Craig R. McClanahan" <cr...@apache.org>.
Where do you have the jdbc2_0-stdext.jar file?  I'm betting that it needs
to be in $CATALINA_HOME/common/lib only for this to work -- because JAR
files here are on the class loading path for both Catalina internal
classes and web application classes.

Craig


On Mon, 20 Aug 2001 VASQUEZ_JASON@LILLY.COM wrote:

> Hello all,
> 
> I read the great message Craig McClanahan posted in the archives  (from 
> Aug 4) about how to setup and use a tomcat 4 datasource.  All has seemed 
> to go pretty well, but I'm having a funny problem, which I'm not sure is a 
> Tyrex problem, a Tomcat 4 problem or a Java education problem on my part 
> :).  (I'm using Tomcat 4 beta 7)
> 
> When I try to get a DataSource from JNDI, I can retrieve a reference just 
> fine.  The problem is that I am having trouble casting it to a 
> javax.sql.DataSource.  It returns an instance of 
> tyrex.jdbc.xa.EnabledDataSource.  If I try to cast to 
> javax.sql.DataSource, I get a ClassCastException from the server.  I 
> looked up this class in the Tyrex API docs, and it does in fact implement 
> javax.sql.DataSource -- I think I should be able to cast to it because of 
> that.  If I work with the tyrex implementation directly, all is ok (i.e., 
> calling tyrex.jdbc.xa.EnabledDataSource.getConnection()), but I obviously 
> won't want to care about the particular implementation in this case.
> 
> If it helps, here is the code I'm trying to use:
> 
> --------------------------
> ctx = new InitialContext();
> ds = (DataSource)ctx.lookup("java:comp/env/jdbc/lis_ds");
> --------------------------
> 
> That failed, so I added this for debugging:
> 
> --------------------------
> Object o = ctx.lookup("java:comp/env/jdbc/lis_ds");
> if (o == null) {
>    System.out.println("looked up a null object");
> } else {
>    System.out.println("o is of type: " + o.getClass().getName()); //<-- 
> prints "tyrex.jdbc.xa.EnabledDataSource"
> }
> --------------------------
> 
> The exceptions I get are like this:
> 
> --------------------------
> java.lang.ClassCastException: tyrex.jdbc.xa.EnabledDataSource
>         at report.ReportPrefs.setDateDefaults(ReportPrefs.java:52)
>         at report.ReportPrefs.<init>(ReportPrefs.java:16)
>         at java.lang.Class.newInstance0(Native Method)
>         at java.lang.Class.newInstance(Class.java:237)
>         at java.beans.Beans.instantiate(Beans.java:207)
>         at java.beans.Beans.instantiate(Beans.java:51)
> ........
> --------------------------
> 
> Any ideas?
> 
> Thanks,
> Jason Vasquez
>