2011-08-19 18 views
6

Vorrei utilizzare la parola chiave Java assert nella mia app Web Spring, principalmente sulle mie classi di dominio (controllare le invarianti all'interno dei costruttori), ma non riesco a vedere come abilitare il controllo dell'asserzione di runtime.Come abilitare le asserzioni java in Tomcat

Per una normale applicazione Java, vorrei utilizzare l'interruttore -ea con il comando java, ma non vedo come posso farlo con Tomcat, ecc

È questa la cosa raccomandata, o dovrei utilizzare la classe "Assert" dal framework Spring? Preferirei mantenere le mie classi di dominio libere da dipendenze Spring, comunque.

risposta

8

Per tomcat, aggiungere -ea a JAVA_OPTS (tutti i processi java avviati) o anche meglio a CATALINA_OPTS (solo per il motore di app Web).

Leggere i file catalina.bat o catalina.sh per ulteriori informazioni su JAVA_OPTS e CATALINA_OPTS.

A cura: Grazie ai commenti da @Joachim

+0

Grazie per questo, ma a) sto usando (per dev) VMware tc Server dall'interno di Eclipse (non che hanno 'catalina.bat' ?, b) Preferirei abilitare le asserzioni solo sulla mia web-app ec) come potrei farlo con qualcosa come VMWares CloudFoundry? Grazie ancora! –

+2

Su una nota più seria: 'CATALINA_OPTS' sarebbe il punto più appropriato qui. La differenza è che 'JAVA_OPTS' sarà usato su * tutti * invocazioni di Java dagli script di avvio di Tomcat (incluso" connettersi a un server in esecuzione e chiedergli di chiudere "uno), dove' CATALINA_OPTS' sarà usato solo per effettivamente eseguendo il server. In questo caso la differenza non è troppo importante, ma per cose come la memoria è piuttosto importante usare quella giusta (non si vuole che lo script di shutdown minuscolo allochi 4 GB di memoria). –

+0

@DecaniBass: beh tecnicamente dovrebbe essere possibile abilitare le asserzioni su una base per-webapp, dato che c'è ['ClassLoader.setDefaultAssertionStatus()'] (http://download.oracle.com/javase/7/docs/api/ java/lang/ClassLoader.html # setDefaultAssertionStatus (booleano)) ma sfortunatamente non so * se * e * come * tali server di applicazioni espongono questa opzione. –

Problemi correlati