2011-08-19 38 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 *這些應用程序服務器是如何暴露該選項的。 –