2011-08-19 4 views
6

주로 내 도메인 클래스 (생성자 내의 invariants 확인)에서 Java assert 키워드를 사용하고자하지만 런타임 어썰트 검사를 활성화하는 방법을 볼 수 없습니다. 일반 자바 응용 프로그램에 대한 Tomcat에서 java 어설 션을 활성화하는 방법

, 나는 자바 명령으로 -ea 스위치를 사용합니다,하지만 난을 등

이 권장되는 것은, 내가 톰캣으로 그렇게 할 수있는 방법을 참조하거나해야하지 않는다 Spring 프레임 워크에서 "Assert"클래스를 사용 하시겠습니까? 내 도메인 클래스를 Spring 의존성으로부터 자유롭게 유지하고 싶습니다.

답변

8

톰캣의 경우 -ea ~ JAVA_OPTS (모든 자바 프로세스가 시작됨) 또는 CATALINA_OPTS (웹 앱 엔진에만 해당)에 더 좋게 추가하십시오.

JAVA_OPTSCATALINA_OPTS에 대한 자세한 내용은 catalina.bat 또는 catalina.sh을 읽어보십시오.

편집 : @Joachim

+0

그 주셔서 감사합니다,하지만) 나는 이클립스 (내부에서) dev에 대한 (VM웨어 TC 서버를 사용하고 의견 덕분에 그'가 않습니다 catalina.bat'? B) 내 웹 앱에 단언문을 사용하는 것을 선호하고 C) VMWares CloudFoundry와 같은 방법으로 어떻게 할 수 있습니까? 다시 한 번 감사드립니다! –

+2

더 심각한 점은'CATALINA_OPTS'가 여기에 더 적절한 지적이 될 것입니다. 차이점은'JAVA_OPTS'는 Tomcat 시작 스크립트 (실행중인 서버에 연결하여 종료 요청)에서 Java의 모든 호출에 사용되며'CATALINA_OPTS'는 실제로 서버를 실행 중입니다. 이 경우 차이점은 그다지 중요하지는 않지만 메모리와 같은 경우에는 올바른 종료 스크립트를 사용하는 것이 중요합니다 (작은 종료 스크립트에서 4GB의 메모리를 할당하는 것을 원하지 않음). –

+0

@DecaniBass : [ClassLoader.setDefaultAssertionStatus()'] (http://download.oracle.com/javase/7/docs/api/)가 있기 때문에 기술적으로 웹 단위로 어설 션을 활성화 할 수 있어야합니다. java/lang/ClassLoader.html # setDefaultAssertionStatus (boolean)) 그러나 불행히도 * * 및 * * 해당 응용 프로그램 서버가 해당 옵션을 노출하는 경우 *를 알지 못합니다. –

관련 문제