2011-08-19 2 views
6

Je voudrais utiliser le mot-clé Java assert dans mon application web Spring, principalement sur mes classes de domaine (vérification des invariants dans les constructeurs), mais je ne vois pas comment activer la vérification d'assertions à l'exécution.Comment activer les assertions java dans Tomcat

Pour une application java normale, je voudrais utiliser le commutateur -ea avec la commande java, mais je ne vois pas comment je peux le faire avec Tomcat, etc.

Est-ce la chose recommandée, ou devrais-je utiliser la classe "Assert" du framework Spring? Je préfère garder mes classes de domaine libres de dépendances de printemps, cependant.

Répondre

8

Pour tomcat, ajoutez -ea à JAVA_OPTS (tous les processus Java démarrés), ou mieux encore CATALINA_OPTS (uniquement pour le moteur d'application Web).

Lire les fichiers catalina.bat ou catalina.sh pour plus d'informations sur JAVA_OPTS et CATALINA_OPTS.

Modifié: Merci aux commentaires de @Joachim

+0

Merci pour cela, mais a) J'utilise (pour dev) VMware tc Server depuis Eclipse (ce que cela a 'catalina.bat' ?, b) Je préférerais activer les assertions uniquement sur ma propre application web et c) comment pourrais-je faire cela avec quelque chose comme VMWares CloudFoundry? Merci encore! –

+2

Sur une note plus sérieuse: 'CATALINA_OPTS' serait le point le plus approprié ici. La différence est que 'JAVA_OPTS' sera utilisé sur * toutes * les invocations de Java à partir des scripts de démarrage de Tomcat (y compris le" se connecter à un serveur en cours d'exécution et lui demander de fermer "), où 'CATALINA_OPTS' ne sera utilisé que pour en cours d'exécution du serveur. Dans ce cas, la différence n'est pas trop importante, mais pour des choses comme la mémoire, il est important d'utiliser la bonne (vous ne voulez pas que le minuscule script d'arrêt alloue 4 Go de mémoire). –

+0

@DecaniBass: bien techniquement, il devrait être possible d'activer des assertions sur une base par-webapp, puisqu'il y a ['ClassLoader.setDefaultAssertionStatus()'] (http://download.oracle.com/javase/7/docs/api/ java/lang/ClassLoader.html # setDefaultAssertionStatus (boolean)) mais malheureusement je ne sais pas * si * et * comment * ces serveurs d'applications exposent cette option. –