2016-08-26 13 views
4

私はJackrabbit 2.13.1で作業しています。JackrabbitセッションがAccessDeniedExceptionで検出されましたが、セッションがnullです

なぜAccessDeniedExceptionがセッションリークを引き起こすのですか?

 try { 
      session = repository.login(creds); //here are creds for user without permissions, just for testing 
     } catch (Throwable t) { 
      if (session != null) { 
       session.logout(); 
      } 
      Throwables.propagateIfInstanceOf(t, javax.jcr.RepositoryException.class); 
      throw Throwables.propagate(t); 
     } 

これは、スロー、予想通り、AccessDeniedException:

Caused by: javax.jcr.LoginException: Workspace access denied 
    at org.apache.jackrabbit.core.RepositoryImpl.login(RepositoryImpl.java:1529) 
    at org.apache.jackrabbit.commons.AbstractRepository.login(AbstractRepository.java:144) 
    at ttt.createSession(RepositoryManager.java:132) 
    ... 51 common frames omitted 

Caused by: javax.jcr.AccessDeniedException: Not allowed to access Workspace default 
    at org.apache.jackrabbit.core.security.DefaultAccessManager.init(DefaultAccessManager.java:159) 
    at org.apache.jackrabbit.core.DefaultSecurityManager.getAccessManager(DefaultSecurityManager.java:280) 
    at org.apache.jackrabbit.core.SessionImpl.createAccessManager(SessionImpl.java:356) 
    at org.apache.jackrabbit.core.SessionImpl.<init>(SessionImpl.java:273) 
    at org.apache.jackrabbit.core.SessionImpl.<init>(SessionImpl.java:239) 
    at org.apache.jackrabbit.core.XASessionImpl.<init>(XASessionImpl.java:101) 
    at org.apache.jackrabbit.core.RepositoryImpl.createSessionInstance(RepositoryImpl.java:1613) 
    at org.apache.jackrabbit.core.RepositoryImpl.createSession(RepositoryImpl.java:956) 
    at org.apache.jackrabbit.core.RepositoryImpl.login(RepositoryImpl.java:1501) 

セッションがnullであるので、私はそれにログアウトを呼び出すことができないんです。しかし、閉じられていないセッションが検出例外がスローされます。

WARN o.a.jackrabbit.core.SessionImpl - Unclosed session detected. The session was opened here: 
java.lang.Exception: Stack Trace 
    at org.apache.jackrabbit.core.SessionImpl.<init>(SessionImpl.java:222) 
    at org.apache.jackrabbit.core.SessionImpl.<init>(SessionImpl.java:239) 
    at org.apache.jackrabbit.core.XASessionImpl.<init>(XASessionImpl.java:101) 
    at org.apache.jackrabbit.core.RepositoryImpl.createSessionInstance(RepositoryImpl.java:1613) 
    at org.apache.jackrabbit.core.RepositoryImpl.createSession(RepositoryImpl.java:956) 
    at org.apache.jackrabbit.core.RepositoryImpl.login(RepositoryImpl.java:1501) 
    at org.apache.jackrabbit.commons.AbstractRepository.login(AbstractRepository.java:144) 
    at ttt.createSession(RepositoryManager.java:132) 

答えて

1

大漁が、これはまだ2.13.3に存在するバグとして明確にを鳴らし、それは例外がSessionImplのコンストラクタでスローされた場合に発生し、セッションが続いています部分的に作成されていますが、それはまだ生きているとみなされ、GCedしようとしているライブセッションは現在のコードでセッションリークとみなされます。このため、この警告が表示されます。

私はこのチケットを作成しましたhttps://issues.apache.org/jira/browse/JCR-4033

関連する問題