2011-08-19 96 views
6

我想在我的Spring Web应用程序中使用Java assert关键字,主要是在我的域类(检查构造函数中的不变量),但我看不到如何启用运行时断言检查。如何在Tomcat中启用java断言

对于一个正常的Java应用程序,我会使用-ea开关用java命令,但我不知道怎样才能做到这一点和Tomcat等

这是推荐的东西,或者我应该使用Spring框架中的“Assert”类?但是,我宁愿让我的域类免于Spring依赖关系。

回答

8

对于tomcat,将-ea添加到JAVA_OPTS(所有java进程已启动),或者甚至更好到CATALINA_OPTS(仅适用于Web应用程序引擎)。

有关JAVA_OPTSCATALINA_OPTS的更多信息,请阅读文件catalina.batcatalina.sh

编辑:感谢来自@Joachim

+0

感谢您的,但)我使用(用于开发)的VMware服务器TC在Eclipse(以评论这是否有'catalina.bat'?B)我更愿意在我自己的web-app上启用断言,以及c)我怎样才能用VMWares CloudFoundry这样的功能来做到这一点?再次感谢! –

+2

更为严肃的说明:'CATALINA_OPTS'在这里更合适。不同之处在于'JAVA_OPTS'将用于从Tomcat启动脚本启动的所有Java调用(包括“连接到正在运行的服务器并要求其关闭”一个),其中'CATALINA_OPTS'只用于实际运行服务器。在这种情况下,差异不是太重要,但对于内存等事情来说,使用正确的内存非常重要(您不希望微小的关闭脚本分配4 GB的内存)。 –

+0

@DecaniBass:从技术上讲,应该可以在每个webapp上启用断言,因为['ClassLoader.setDefaultAssertionStatus()'](http://download.oracle.com/javase/7/docs/api/ java/lang/ClassLoader.html#setDefaultAssertionStatus(boolean)),但不幸的是,我不知道* if *和* how *这些应用程序服务器是如何暴露该选项的。 –