2011-08-19 13 views
6

Me gustaría usar la palabra clave Java assert en mi aplicación web Spring, principalmente en mis clases de dominio (revisando invariantes dentro de constructores), pero no veo cómo habilitar la verificación de la afirmación en tiempo de ejecución.Cómo puedo habilitar las afirmaciones de java en Tomcat

Para una aplicación Java normal, me gustaría utilizar el interruptor -ea con el comando java, pero no veo cómo puedo hacer eso con Tomcat, etc.

Es esto lo recomendado, o debería usar la clase "Assert" del framework Spring? Sin embargo, prefiero mantener mis clases de dominio libres de dependencias Spring.

Respuesta

8

Para tomcat, agregue -ea a JAVA_OPTS (todos los procesos de Java se iniciaron), o mejor aún a CATALINA_OPTS (solo para el motor de aplicación web).

Lea los archivos catalina.bat o catalina.sh para obtener más información sobre JAVA_OPTS y CATALINA_OPTS.

Editado: Gracias a los comentarios de @Joachim

+0

Gracias por eso, pero a) estoy usando (por dev) VMware tc Server desde dentro de Eclipse (no tiene que 'catalina.bat' ?, b) Preferiría habilitar las afirmaciones solo en mi propia aplicación web yc) ¿cómo podría hacerlo con algo como VMWares CloudFoundry? ¡Gracias de nuevo! –

+2

En una nota más seria: 'CATALINA_OPTS 'sería el punto más apropiado aquí. La diferencia es que 'JAVA_OPTS' se usará en invocaciones * all * de Java a partir de los scripts de inicio de Tomcat (incluido el" conectarse a un servidor en ejecución y solicitar que apague "), donde' CATALINA_OPTS' solo se usará para en realidad ejecutando el servidor. En este caso, la diferencia no es demasiado importante, pero para cosas como la memoria es muy importante usar la correcta (no desea que la pequeña secuencia de comandos de apagado asigne 4 GB de memoria). –

+0

@DecaniBass: técnicamente debería ser posible habilitar las afirmaciones por aplicación web, ya que está ['ClassLoader.setDefaultAssertionStatus()'] (http://download.oracle.com/javase/7/docs/api/ java/lang/ClassLoader.html # setDefaultAssertionStatus (boolean)) pero desafortunadamente no sé * si * y * cómo * esos servidores de aplicaciones están exponiendo esa opción. –

Cuestiones relacionadas