Lars Huttar wrote:
Hi all,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 2.1.5.1 under Tomcat 4.1.
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
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"
xmlns:xsp="http://apache.org/xsp"
xmlns:xsp-request="http://apache.org/xsp/request/2.0"
xmlns:esql="http://apache.org/cocoon/SQL/v2">
<test>
<esql:connection>
<esql:pool>GEM-Ethnologue-SQLServer-reader</esql:pool>
<esql:execute-query>
<esql:query>SELECT
Ethnologue_Continent_Id id, Ethnologue_Continent_Lb label FROM
Ethnologue_Continent_base WHERE Ethnologue_Continent_Id = 99999 ORDER BY Ethnologue_Continent_Lb
</esql:query>
<esql:results>
<table>
<esql:row-results>
<tr>
<td><esql:get-string column="id"/></td>
<td><esql:get-string column="label"/></td>
</tr>
</esql:row-results>
</table>
</esql:results>
<esql:error-results>An error occurred</esql:error-results>
<esql:no-results>
<p>Sorry, no results!</p>
</esql:no-results>
</esql:execute-query>
</esql:connection>
</test>
</xsp:page>
Thanks, Lars
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
