cocoon-users-fr mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mathieu Grimault <mathieu.grima...@univ-nantes.fr>
Subject Re: Comment catcher l'erreur 'OutOfMemory' (Java Heap Space) proprement ?
Date Mon, 22 Jan 2007 15:02:51 GMT
jmc.artignan@free.fr a écrit :
> Merci Bertrand pour ta reponse rapide.
>
> Je suis d'accord avec toi pour dire qu'il vaut mieux eviter d'arriver a une
> erreur 'OutOfMemory', et tout est bien fait dans mon appli (au mieux de mes
> connaissances en tout cas) pour eviter d'y arriver.
>
> Cependant le cas arrive, rarement mais il est possible. En fait, je ne fais
> aucune action precise lorsque je 'catche' l'erreur 'OutOfMemory'. Je n'essaie
> pas de rentrer dans un autre processus, mais juste de detecter l'erreur pour
> afficher un message 'propre' (j'invite l'utilisateur a choisir des criteres de
> requete plus selectifs pour recuperer moins de donnees de la base).
>
> L'erreur arrive juste car il y a trop de donnees a manipuler. Beaucoup de
> donnees sont recuperees de la base, et que la sortie soit Excel ou PDF,
> apparemment on passe le 'generate' mais pas le 'transform'.
>
> pour la sortie excel par exemple :
>
> <map:generate type="serverpages" src="[...nom_de_mon_fichier...].xsp"/>
> <map:transform src="[...nom_de_mon_fichier...].xsl"/>
> <map:serialize type="xls"/>
>
> En cours de transformation, j'ai mon erreur. Cocoon n'est pas bloque a
> proprement parler, il suffit de faire un 'back' du navigateur (ce n'est pas
> beau et c'est bien ce que je voudrais eviter en ayant 'ma' page d'erreur
> propre), et on retrouve l'appli, prete a l'emploi, on peut faire d'autres
> actions.
>
> Des idees sur comment DETECTER l'erreur 'OutOfMemory' en fait ?
>
> Merci d'avance. J'ai lu tout ce que j'ai pu sur le net mais il s'agit toujours
> de comment eviter l'erreur, pas de savoir la detecter.
>
> Cordialement,
> Jean-Michel
>
> Selon Bertrand Delacretaz <bdelacretaz@apache.org>:
>
>   
>> On 1/22/07, jmc.artignan@free.fr <jmc.artignan@free.fr> wrote:
>>
>>     
>>> ...J'essaie de catcher l'erreur 'OutOfMemory' pour rediriger l'utilisateur
>>>       
>> vers une
>>     
>>> page d'erreur propre, aux couleurs de mon appli....
>>>       
>> Je n'ai jamais approfondi la question en ce qui concerne Cocoon, mais
>> en général il n'est pas recommandé de "catcher" une OutOfMemoryError:
>> la JVM, ou en tout cas le thread qui traite la requête, peut être dans
>> un état incohérent, on ne peut plus compter dessus pour faire quelque
>> chose de sensé.
>>
>> Voir par exemple http://www.onjava.com/lpt/a/1110 et
>> http://tomcat.apache.org/faq/memory.html#why (en anglais).
>>
>> Il est à mon avis nécessaire de redémarrer la JVM si cela se produit,
>> pour éviter d'arriver dans un état incohérent. Mais je ne suis pas un
>> super-spécialiste de Tomcat ou Jetty, peut-être que quelqu'un a des
>> infos plus précises?
>>
>> -Bertrand
>>
>>     
>
>
>
> ---------------------------------------------------------------------
> 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
>
>   
Bonjour !
Pour mon premier message sur la liste je ne vais pas résoudre le 
problème ...
De ce que j'en sais : OutOfMemory va survenir sur la JVM et non sur un 
thread en particulier, donc c'est l'ensemble du serveur qui va tomber. 
Je ne pense pas qu'on puisse détecter l'erreur directement dans la 
webapplication. Peut être que Tomcat est capable de le faire via 
l'utilisation du web.xml de la webapplication ou bien d'un paramètre 
dans server.xml mais j'en doute.
Une solution qui peut marcher : apache en frontal et Tomcat derrière. 
Apache gère les pages d'erreurs les plus graves, lorsque Tomcat répond 
un erreur 500 ou bien ne répond pas. Malheureusement je ne connais pas 
assez Apache pour t'aider.

Exemple d'un web.xml (encore une fois je pense pas que cela puisse 
marcher avec OFM) :

...
<!-- Liste des pages d'erreurs --> 
  <error-page> <!-- Non trouvé -->
      <error-code>404</error-code>
      <location>/jsp/404.jsp</location>
  </error-page>
  <error-page> <!-- Erreur interne serveur -->
      <error-code>500</error-code>
      <location>/jsp/500.jsp</location>
  </error-page>
  <error-page> <!-- Ca marche ca ? -->
      <error-code>* java.lang.outOfMemory*</error-code>
      <location>/jsp/500.jsp</location>
  </error-page>
...


Mathieu

---------------------------------------------------------------------
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