cocoon-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Lars Huttar <>
Subject Re: esql: no error message when db inaccessible
Date Fri, 18 Mar 2005 22:14:44 GMT
Lars Huttar wrote:

> Hi all,
> I've got an application that uses esql in XSP pages for database access.
> I use an <esql:error-results> block to collect any error messages and 
> pass them to the user.
> This works most of the time, e.g. when my XSP page has a wrong table 
> name or there is a permissions error: the error is reported in the 
> output of the XSP page and I'm able to show it to the user.
> However, when the database is stopped, and I run an XSP page with a 
> query, no error is reported; there are simply no rows returned. 
> (Actually, sometimes the query just hangs and doesn't return; other 
> times, it returns but there are no result rows.) So I don't see a way 
> to distinguish between "your query ran successfully and the answer is 
> an empty set" and "couldn't connect to the database". To the user, the 
> difference is large. I've found it very mysterious to run a query and 
> "discover" that all the data had disappeared.
> Could this be due to some problem in the type of db connection I'm 
> using? The datasource config in cocoon.xconf looks like:
>  <jdbc name="GEM-Ethnologue-SQLServer-reader">
>    <pool-controller min="5" max="10" oradb="true"/>
> <dburl>jdbc:Microsoft:sqlserver://localhost:1433;DatabaseName=ethnolog;SelectMethod=Cursor;</dburl>

>    <user>...</user>
>    <password>...</password>
>    <autocommit>true</autocommit>
>  </jdbc>
> Thanks...
> Lars
Hmm, experimentally, it looks like I can check for the contents of the 
<esql:no-results> block. When the database is stopped, there are no rows 
returned but the <esql:no-results> block does not evaluate. So if this 
behavior is consistent, I can signal an error when there are no results 
but no <p>Sorry, no results!</p> (as in the following test code). 
However, I don't see this documented anywhere. It still smacks of a bug 
rather than a feature. By the way I'm running Cocoon under 
Tomcat 4.1.
Any ideas on how this condition could be detected more cleanly/robustly?

FWIW, here's my sample test esql XSP page:

<?xml version="1.0" encoding="UTF-8"?>
<!-- an xsp page to test what happens when you try to connect to a 
stopped sql server -->
<xsp:page language="java"
          Ethnologue_Continent_Id id, Ethnologue_Continent_Lb label FROM
          Ethnologue_Continent_base WHERE Ethnologue_Continent_Id = 
99999 ORDER BY Ethnologue_Continent_Lb
                <td><esql:get-string column="id"/></td>
                <td><esql:get-string column="label"/></td>
        <esql:error-results>An error occurred</esql:error-results>
          <p>Sorry, no results!</p>


To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message