cocoon-users-fr mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jmc.artig...@free.fr
Subject Comment catcher l'erreur 'OutOfMemory' (Java Heap Space) proprement ?
Date Mon, 22 Jan 2007 13:54:23 GMT
Bonjour a tous,

J'essaie de catcher l'erreur 'OutOfMemory' pour rediriger l'utilisateur vers une
page d'erreur propre, aux couleurs de mon appli.

J'utilise cocoon-2.1.9 et java 1.5.0_10.

J'ai suivi les indications du site :

http://cocoon.apache.org/2.1/userdocs/concepts/errorhandling.html

et cela marche tres bien pour differents types d'erreurs comme
'resourceNotFoundException' (j'ai volontairement mis un nom de fichier errone)
ou
l'erreur 'sqlException' (j'ai volontairement mis une definition erronee d'un
datasource dans mon cocoon.xconf). Dans les deux cas, au lieu d'obtenir la page
standard d'erreur cocoon (avec la possibilite d'afficher ou de cacher les 'stack
traces' de cocoon et de java), l'utilisateur est bien dirige vers des pages de
message d'erreur propre que j'ai faites.

En revanche, pour l'erreur 'OutOfMemory', je n'obtiens pas la page d'erreur
cocoon standard mais une page toute blanche dans mon navigateur avec :

HTTP ERROR: 500 Java+heap+space

RequestURI=/[...URI de ce que j'appelle...]

Powered by Jetty://

et c'est tout. On dirait que ce type d'erreur echappe au controle de cocoon. Je
n'essaie pas d'eviter l'erreur, je voudrais simplement la traiter proprement.

COMMENT FAUT-IL FAIRE ?

Voici mon code :

1. en debut de sitemap :

<map:selectors>
 <map:selector name="ajax-request"
src="org.apache.cocoon.ajax.AjaxRequestSelector"/>
 <map:selector name="exceptionSelector"
src="org.apache.cocoon.selection.ExceptionSelector">
  <exception name="outOfMemoryError" class="java.lang.OutOfMemoryError"/>
  <exception name="runtimeErrorException"
class="javax.management.RuntimeErrorException"/>
  <exception name="runtimeException" class="java.lang.RuntimeException"/>
  <exception name="cascadingException"
class="org.apache.avalon.framework.CascadingException"/>
  <exception name="saxException" class="org.xml.sax.SAXException"/>
  <exception name="applicationException"
class="org.omg.CORBA.portable.ApplicationException"/>
  <exception name="sqlException" class="java.sql.SQLException"/>
  <exception name="resourceNotFoundException"
class="org.apache.cocoon.ResourceNotFoundException"/>
  <exception name="processingException"
class="org.apache.cocoon.ProcessingException" unroll="true"/>
 </map:selector>
</map:selectors>

2. puis dans mon pipeline :

<map:handle-errors>
 <map:select type="exceptionSelector">
  <map:when test="outOfMemoryError">
  <map:generate type="jx"
src="cocoon:/error-generic-error-memory-error-mesage-jx.html"/>
  <map:serialize type="html"/>
  </map:when>
  <map:when test="runtimeErrorException">
  <map:generate type="jx"
src="cocoon:/error-generic-error-memory-error-mesage-jx.html"/>
  <map:serialize type="html"/>
  </map:when>
  <map:when test="runtimeException">
  <map:generate type="jx"
src="cocoon:/error-generic-error-memory-error-mesage-jx.html"/>
  <map:serialize type="html"/>
  </map:when>
  <map:when test="cascadingException">
  <map:generate type="jx"
src="cocoon:/error-generic-error-memory-error-mesage-jx.html"/>
  <map:serialize type="html"/>
  </map:when>
  <map:when test="saxException">
  <map:generate type="jx"
src="cocoon:/error-generic-error-unexpected-error-mesage-jx.html"/>
  <map:serialize type="html"/>
  </map:when>
  <map:when test="applicationException">
  <map:generate type="jx"
src="cocoon:/error-generic-error-unexpected-error-mesage-jx.html"/>
  <map:serialize type="html"/>
  </map:when>
  <map:when test="sqlException">
  <map:call function="displayLoginPortalWithError">
  <map:parameter name="file_to_display"
value="error-database-connection-error-mesage"/>
  </map:call>
  </map:when>
  <map:when test="resourceNotFoundException">
  <map:generate type="jx"
src="cocoon:/error-generic-error-resource-error-mesage-jx.html"/>
  <map:serialize type="html"/>
  </map:when>
  <map:when test="processingException">
  <map:generate type="jx"
src="cocoon:/error-generic-error-unexpected-error-mesage-jx.html"/>
  <map:serialize type="html"/>
  </map:when>
 </map:select>
</map:handle-errors>

Cela marche tres bien pour l'erreur 'resourceNotFoundException' et
'sqlException', mais en revanche impossible de catcher l'erreur 'OutOfMemory'
malgre les differents types d'erreur essayes :

. outOfMemoryError
. runtimeErrorException
. runtimeException
. cascadingException
. saxException
. applicationException
. processingException

Rien ne marche !

Merci d'avance pour vos suggestions. Ce type de probleme doit interesser
beaucoup de monde.

Cordialement,
Jean-Michel ARTIGNAN


---------------------------------------------------------------------
Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
Pour vous desinscrire : mailto:users-fr-unsubscribe@cocoon.apache.org
Autres commandes : mailto:users-fr-help@cocoon.apache.org


Mime
View raw message