2012-10-22 2 views
1

저는 Google Apps를 eclipse를 통해 로컬로 실행하고 있습니다. 나는 http://localhost:8888/에 연결하고 때로는 이클립스는 AccessControlContext.class이 라인 374에서 예외가 발생합니다 :로거가 Google Apps JSP를 중단시키는 이유는 무엇입니까?

Thread [[email protected]] (Suspended (exception AccessControlException)) 

AccessControlContext.checkPermission(Permission) line: 374 
AccessController.checkPermission(Permission) line: 546 
DevAppServerFactory$CustomSecurityManager(SecurityManager).checkPermission(Permission) line: 532  
DevAppServerFactory$CustomSecurityManager.checkPermission(Permission) line: 289 
DevAppServerFactory$CustomSecurityManager(SecurityManager).checkPackageAccess(String) line: 1512  
Launcher$AppClassLoader.loadClass(String, boolean) line: 298  
Launcher$AppClassLoader(ClassLoader).loadClass(String) line: 247  
ResourceBundle$RBClassLoader.loadClass(String) line: 435  
ResourceBundle$Control.newBundle(String, Locale, String, ClassLoader, boolean) line: 2289 
ResourceBundle.loadBundle(CacheKey, List<String>, Control, boolean) line: 1364 
ResourceBundle.findBundle(CacheKey, List<Locale>, List<String>, int, Control, ResourceBundle) line: 1328  
ResourceBundle.findBundle(CacheKey, List<Locale>, List<String>, int, Control, ResourceBundle) line: 1282  
ResourceBundle.findBundle(CacheKey, List<Locale>, List<String>, int, Control, ResourceBundle) line: 1282  
ResourceBundle.getBundleImpl(String, Locale, ClassLoader, ResourceBundle$Control) line: 1224  
ResourceBundle.getBundle(String) line: 705 
Level.getLocalizedName() line: 223 
SimpleFormatter.format(LogRecord) line: 64 
ConsoleHandler(StreamHandler).publish(LogRecord) line: 179 
ConsoleHandler.publish(LogRecord) line: 88 
Logger.log(LogRecord) line: 478 
Logger.doLog(LogRecord) line: 500 
Logger.log(Level, String) line: 523 
Logger.warning(String) line: 1026 

난 그냥이 전화 했어 :

다음
throw new AccessControlException("access denied "+perm, perm); 

는 스택 추적입니다

및 로그

log.warning("string"); 
은과 같이 초기화 :

private static final Logger log = Logger.getLogger(MyServletName.class.getName()); 
,

무슨 문제가 있습니까?

답변

0

대신이 줄을 사용해보십시오.

private static final Logger log = Logger.getLogger(MyServletName.class.getSimpleName()); 

그래서, 대신 getName()getSimpleName()를 사용 : 나는 GAE 코드를 작성할 때 일반적으로 다음 줄과 비슷한을 사용합니다. getName()getSimpleName()에있는 java.lang.Class javadoc을 읽으십시오. 전자는 클래스 형식 이름의 끝에 'L'문자를 추가하는 반면, 후자는 (상황에 따라 바람직하지 않은) 동작을 소유하지 않습니다.

또한 클래스의 Logger 개체에 Guice Injection 을 사용하는 것을 고려하십시오.

관련 문제