cocoon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Uyttenhove Jan <Jan.Uyttenh...@the-ecorp.com>
Subject [C2] handle-errors with content aggregation
Date Wed, 11 Jul 2001 14:05:57 GMT
Hi all,
 
I'm currently working on a site that frequently uses content aggregation.
But when an error occurs, I should be able to show a nice error page, not
the standard cocoon error page. So now I'm trying to use the handle-errors
for this purpose, but I have some problems when an error occurs in a part of
a aggregated page.
 
An example:
    <map:aggregate element="page">
        <map:part src="header.xml" element="header"/>
        <map:part src="left.xml" element="left"/>
        <map:part src="middle.xml" element="middle"/>
        <map:part src="footer" element="footer"/>
    </map:aggregate>
and
    <map:handle-errors>
        <map:transform src="stylesheets/system/error2html.xsl"/>
        <map:serialize status-code="500"/>
    </map:handle-errors>
 
When an error occurs while generating the part middle.xml, I get a page
containing header, left and the (transformed) cocoon error, but no footer. 
This is not exactly what I want, so I tried a redirect to a static error
page inside the handle-errors block:
    <map:handle-errors>
        <map:redirect-to uri="errorpage"/>
    </map:handle-errors> 
This doesn't work either, I get:
    (...)
    DEBUG   64521   [cocoon  ] (Thread-6): Sitemap: session='false',
redirecting to 'errorpage'
    DEBUG   64521   [cocoon  ] (Thread-6): Sending redirect to 'errorpage'
    ERROR   64521   [cocoon  ] (Thread-6): error notifier barfs
    java.lang.IllegalStateException: Response has already been committed
    at
org.apache.tomcat.facade.HttpServletResponseFacade.sendError(HttpServletResp
onseFacade.java:204)
    at
org.apache.tomcat.facade.HttpServletResponseFacade.sendRedirect(HttpServletR
esponseFacade.java:230)
    at
org.apache.cocoon.environment.http.HttpResponse.sendRedirect(HttpResponse.ja
va:84)
    at
org.apache.cocoon.environment.http.HttpEnvironment.redirect(HttpEnvironment.
java:106)
    at
org.apache.cocoon.www.sitemap_xmap.error_process_1(sitemap_xmap.java:5035)
    at org.apache.cocoon.www.sitemap_xmap.process(sitemap_xmap.java:5003)
    at org.apache.cocoon.www.sitemap_xmap.process(sitemap_xmap.java:1245)
    at org.apache.cocoon.sitemap.Handler.process(Handler.java:175)
    at org.apache.cocoon.sitemap.Manager.invoke(Manager.java:94)
    at org.apache.cocoon.Cocoon.process(Cocoon.java:293)
    at
org.apache.cocoon.servlet.CocoonServlet.service(CocoonServlet.java:471)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
    (...)
 
which makes sense, as my header part and left part of the aggregation have
already been committed, right?
 
So I can't redirect here, because I'm handling errors in one part of my
aggregation, and the first two parts have already been committed. 
But if I handle errors of a part of the aggregation, and of the aggregation
itself, then why isn't the last part of the aggregation displayed?
And what can I do to simple show an error page, without any remaining
aggregation parts? 
 
Any suggestions?
 
Thanx,
 
Jan
 
___________________________________________________
 
 
Jan Uyttenhove
- Software Engineer -
 
The E-corporation
Roderveldlaan 3 bus 1
B-2600 Antwerpen
 
Guldensporenpark 10 (Axxes 51-003)
B-9820 Merelbeke-Gent
 
T:+32 [0]9 272.22.00
F:+32 [0]9 272.22.11
______________________________________
- Good company for the road ahead - www.the-ecorp.com
<http://www.the-ecorp.com/> 

Mime
View raw message