Besides I had same problem (the original mail was me), I had double
check paths, and I'm sure I didn't had additional derby.jar anywhere
(only Tomcat/common/lib).
But I'm happy you query return to work. At that time, I was under
pressure, and could not achive the problem (neither got any response
from Derby group), I was forced to go out of Derby and use a commercial Db.
Richter
Chris Newell escreveu:
> Hello all...
>
>
>
> I seem to have resolved my own issue as I was preparing a message to
> this list seeking help (thanks!). Having spent more hours than I care to
> admit trying to figure this out, and having seen another user in the
> list archive that had a similar problem with no solution provided, I
> thought that I'd post this with hopes of helping someone else that made
> the same stupid mistake.
>
>
>
> The issue was previously discussed in December:
>
> http://mail-archives.apache.org/mod_mbox/db-derby-user/200512.mbox/%3c43
> 96CF07.7000508@mgrinformatica.com.br%3e
>
>
>
> The problem was:
>
> -------------------------
>
> This issue arises when executing the statement "select count(*) from
> DEFAULT_SCHEMA.general_events". If I execute it using a datasource from
> the Tomcat pool I got the exception: 'java.lang.ClassCastException:
> org.apache.derby.impl.sql.execute.CountAggregator' was thrown while
> evaluating an expression. When I execute nearly identical code loading
> the driver myself I got a proper response.
>
>
>
> The environment was:
>
> ------------------------------
>
> RedHat 4ES/2.6.9-5.EL
>
> Apache Tomcat/5.5.7
>
> Apache Derby/10.1.2.1
>
>
>
> The code was:
>
> ---------------------
>
> This worked:
>
> Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
>
> Connection xconn =
> DriverManager.getConnection("jdbc:derby:xag;create=true");
>
> Statement xstmnt = xconn.createStatement();
>
> if (xstmnt.execute("select count(*) from
> DEFAULT_SCHEMA.general_events")){
>
> ResultSet xrs = xstmnt.getResultSet();
>
> if (xrs.next()){
>
> int xxx = xrs.getInt(1);
>
> }
>
> }
>
>
>
> This didn't work:
>
> InitialContext cxt = new InitialContext();
>
> DataSource ds = (DataSource)
> cxt.lookup("java:comp/env/xag/derby");
>
> Connection conn = ds.getConnection();
>
> Statement stmnt = conn.createStatement();
>
> if (stmnt.execute("select count(*) from
> DEFAULT_SCHEMA.general_events")){
>
> ResultSet rs = stmnt.getResultSet();
>
> if (rs.next()){
>
> int xx = rs.getInt(1);
>
> }
>
> }
>
>
>
> The exception was:
>
> ----------------------------
>
> SQL Exception: The exception 'java.lang.ClassCastException:
> org.apache.derby.impl.sql.execute.CountAggregator' was thrown while
> evaluating an expression.
>
>
>
> The solution was:
>
> -------------------------
>
> I found that I had put a copy of derby.jar in both $TOMCAT/common/lib as
> well as $TOMCAT/webapps/[my app]/WEB-INF/lib. I removed the one under
> webapps and suddenly, as if by magic, I could count the rows in my
> table.... And the world seems like a nicer place.
>
>
>
>
>
>
>
>
>
>
>
|