4 votes

Le fichier des propriétés est déchargé

J'ai une application web Struts 2 qui tourne sur Tomcat 7 sur Windows Server 2008 (uniquement Tomcat, pas Apache ni IIS). Les textes de l'application sont stockés dans des fichiers .properties et sont gérés par Struts 2 I18N Interceptor. Dans les JSP, j'utilise <s:text name="menu.help" /> étiquettes.
Parfois (deux fois au cours du dernier mois), l'application perd les références aux fichiers de propriétés, car ils ont été déchargés, et commence à afficher les clés à la place. Par exemple, pour l'anglais, elle affiche toujours "Help", mais lorsque je rencontre ce problème, elle commence à afficher "menu.help". Je dois redémarrer l'application pour qu'elle fonctionne à nouveau normalement.
J'ai cherché des erreurs connexes dans les journaux, mais je n'ai rien trouvé qui soit lié à I18n ou aux propriétés. J'ai également cherché OutOfMemoryError mais n'en a pas trouvé non plus.
Savez-vous quel peut être le problème ? Pouvez-vous me suggérer un moyen de le résoudre ?
Gracias

Editer :
Voici la partie pertinente de mon struts.xml :

<struts>
    <constant name="struts.custom.i18n.resources" value="resources" />
    ...

Et les fichiers de propriétés (resources_en.properties, resources_es.properties, ...) sont situés dans le WEB-INF/classes répertoire.

0voto

surfealokesea Points 982

Je pense que vous avez besoin de propriétés par défaut : resources.properties

Si vous obtenez des clés au lieu de traductions, c'est certainement parce que la locale par défaut n'est pas définie.

0voto

Alireza Fattahi Points 1318

S'il s'agit d'un problème de mémoire, je vous suggère de procéder comme suit :

  1. Réduire la taille du fichier de propriété, voir si cela résout le problème. Réduisez d'abord la taille du fichier, faites un test de charge et voyez le résultat.
  2. Répartissez-le dans différents fichiers de propriétés pour voir si cela se produit dans tous les fichiers ou seulement dans certains d'entre eux.

C'est mon expérience personnelle :

Il arrive que la JVM ramasse (par erreur) un objet lorsqu'il n'est pas utilisé pendant un certain temps. J'ai le même problème avec JDK 4 et oracle application server 9i. La JVM a ramassé la connexion à la base de données lorsque la charge du site a chuté. Donc, développez une petite page jsp (test.jsp), ajoutez <s:text name="menu.help" /> à elle. Ensuite, écrivez une petite application qui demande cette page toutes les 1min.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X