diff --git oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/observation/ObservationManagerImpl.java oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/observation/ObservationManagerImpl.java
index 4e184d9..6f8f21c 100644
--- oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/observation/ObservationManagerImpl.java
+++ oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/observation/ObservationManagerImpl.java
@@ -367,7 +367,7 @@ public class ObservationManagerImpl implements JackrabbitObservationManager {
     }
 
     @Override
-    public EventListenerIterator getRegisteredEventListeners() throws RepositoryException {
+    public EventListenerIterator getRegisteredEventListeners() {
         return new EventListenerIteratorAdapter(processors.keySet());
     }
 
diff --git oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/repository/RepositoryImpl.java oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/repository/RepositoryImpl.java
index 4de2570..b429b30 100644
--- oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/repository/RepositoryImpl.java
+++ oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/repository/RepositoryImpl.java
@@ -275,7 +275,7 @@ public class RepositoryImpl implements JackrabbitRepository {
             boolean relaxedLocking = getRelaxedLocking(attributes);
 
             RefreshStrategy refreshStrategy = refreshInterval == null
-                ? new RefreshStrategy.LogOnce(60)
+                ? new ObserverAwareStrategy(new RefreshStrategy.LogOnce(60))
                 : new RefreshStrategy.Timed(refreshInterval);
             ContentSession contentSession = contentRepository.login(credentials, workspaceName);
             SessionDelegate sessionDelegate = createSessionDelegate(refreshStrategy, contentSession);
@@ -283,6 +283,9 @@ public class RepositoryImpl implements JackrabbitRepository {
                     statisticManager, securityProvider,
                     createAttributes(refreshInterval, relaxedLocking),
                     sessionDelegate, observationQueueLength, commitRateLimiter);
+            if (refreshStrategy instanceof ObserverAwareStrategy){
+                ((ObserverAwareStrategy) refreshStrategy).setSessionContext(context);
+            }
             return context.getSession();
         } catch (LoginException e) {
             throw new javax.jcr.LoginException(e.getMessage(), e);
@@ -506,6 +509,32 @@ public class RepositoryImpl implements JackrabbitRepository {
         }
     }
 
+    private static class ObserverAwareStrategy implements RefreshStrategy {
+        private final LogOnce logOnce;
+        private SessionContext sessionContext;
+
+        public ObserverAwareStrategy(LogOnce logOnce) {
+            this.logOnce = logOnce;
+        }
+
+        @Override
+        public boolean needsRefresh(long secondsSinceLastAccess) {
+            if (sessionContext == null || !sessionContext.hasEventListeners()){
+                return logOnce.needsRefresh(secondsSinceLastAccess);
+            }
+            return false;
+        }
+
+        @Override
+        public void refreshed() {
+            logOnce.refreshed();
+        }
+
+        public void setSessionContext(SessionContext sessionContext) {
+            this.sessionContext = sessionContext;
+        }
+    }
+
     private static class RegistrationTask implements Runnable {
         private final SessionStats sessionStats;
         private final Whiteboard whiteboard;
diff --git oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/session/SessionContext.java oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/session/SessionContext.java
index 9aba4bc..4ea34c0 100644
--- oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/session/SessionContext.java
+++ oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/session/SessionContext.java
@@ -295,6 +295,13 @@ public class SessionContext implements NamePathMapper {
         return observationManager;
     }
 
+    public boolean hasEventListeners(){
+        if (observationManager != null){
+            return observationManager.getRegisteredEventListeners().hasNext();
+        }
+        return false;
+    }
+
     public Set<String> getOpenScopedLocks() {
         return openScopedLocks;
     }
