_currentRequest = currentRequest; _msmContext = _sessionBackupService.getManager().getContext();
@Nonnull protected SessionManager createSessionManager() { final SessionManager manager = mock( SessionManager.class ); final StandardContext context = createContext(); when( manager.getContext() ).thenReturn(context); // needed for createSession when( manager.getContainer() ).thenReturn(context); // needed for createSession when( manager.getMemcachedSessionService() ).thenReturn(newMemcachedSessionService(manager)); when( manager.newMemcachedBackupSession() ).thenReturn( new MemcachedBackupSession( manager ) ); when( manager.willAttributeDistribute(anyString(), anyObject())).thenReturn(true); return manager; }
@BeforeMethod public void setUp() throws Exception { _service = mock( MemcachedSessionService.class ); _request = mock( Request.class ); _response = mock( Response.class ); final Context _contextContainer = mock(Context.class); final Host _hostContainer = mock(Host.class); final SessionManager _manager = mock(SessionManager.class); when(_service.getManager()).thenReturn(_manager); when(_manager.getContext()).thenReturn(_contextContainer); when(_contextContainer.getParent()).thenReturn(_hostContainer); when(_contextContainer.getPath()).thenReturn("/"); _sessionTrackerValve = createSessionTrackerValve(); _nextValve = mock( Valve.class ); _sessionTrackerValve.setNext( _nextValve ); _sessionTrackerValve.setContainer(_hostContainer); when(_request.getRequestURI()).thenReturn( "/someRequest"); when(_request.getMethod()).thenReturn("GET"); when(_request.getQueryString()).thenReturn(null); when(_request.getContext()).thenReturn(_contextContainer); when(_request.getNote(eq(RequestTrackingHostValve.REQUEST_PROCESSED))).thenReturn(Boolean.TRUE); when(_request.getNote(eq(RequestTrackingHostValve.SESSION_ID_CHANGED))).thenReturn(Boolean.FALSE); }
protected void updateExpirationInMemcached() { if ( _enabled.get() && _sticky ) { final Session[] sessions = _manager.findSessions(); final int delay = _manager.getContext().getBackgroundProcessorDelay(); for ( final Session s : sessions ) { final MemcachedBackupSession session = (MemcachedBackupSession) s;
_currentRequest = new CurrentRequest(); _trackingHostValve = createRequestTrackingHostValve(sessionCookieName, _currentRequest); final Context context = _manager.getContext(); context.getParent().getPipeline().addValve(_trackingHostValve); _trackingContextValve = createRequestTrackingContextValve(sessionCookieName);
final int processExpiresOffset = getManager().getProcessExpiresFrequency() * getManager().getContext().getBackgroundProcessorDelay(); return expirationTime + processExpiresOffset;
public void shutdown() { _log.info( "Stopping services." ); _manager.getContext().getParent().getPipeline().removeValve(_trackingHostValve); _manager.getContext().getPipeline().removeValve(_trackingContextValve); _backupSessionService.shutdown(); if ( _lockingStrategy != null ) { _lockingStrategy.shutdown(); } if ( _storage != null ) { _storage.shutdown(); _storage = null; } _transcoderFactory = null; _invalidSessionsCache.clear(); }
private ObjectInputStream createObjectInputStream( final ByteArrayInputStream bis ) throws IOException { final ObjectInputStream ois; ClassLoader classLoader = null; if ( _manager != null && _manager.getContext() != null ) { classLoader = _manager.getContainerClassLoader(); } if ( classLoader != null ) { ois = new CustomObjectInputStream( bis, classLoader ); } else { ois = new ObjectInputStream( bis ); } return ois; }
protected MemcachedNodesManager createMemcachedNodesManager(final String memcachedNodes, final String failoverNodes) { final Context context = _manager.getContext(); final String webappVersion = Reflections.invoke(context, "getWebappVersion", null); final StorageKeyFormat storageKeyFormat = StorageKeyFormat.of(_storageKeyPrefix, context.getParent().getName(), context.getName(), webappVersion); return MemcachedNodesManager.createFor( memcachedNodes, failoverNodes, storageKeyFormat, _storageClientCallback); }
session.setMaxInactiveInterval( _manager.isMaxInactiveIntervalSet() ? _manager.getMaxInactiveInterval() : _manager.getContext().getSessionTimeout() * 60 );
final int delay = manager.getContext().getBackgroundProcessorDelay(); manager.setMaxInactiveInterval( delay * 4 );
final int processExpiresOffset = getManager().getProcessExpiresFrequency() * getManager().getContext().getBackgroundProcessorDelay(); return expirationTime + processExpiresOffset;
final int delay = manager.getContext().getBackgroundProcessorDelay(); manager.setMaxInactiveInterval( delay * 4 );
protected void updateExpirationInMemcached() { if ( _enabled.get() && _sticky ) { final Session[] sessions = _manager.findSessions(); final int delay = _manager.getContext().getBackgroundProcessorDelay(); for ( final Session s : sessions ) { final MemcachedBackupSession session = (MemcachedBackupSession) s;
_currentRequest = new CurrentRequest(); _trackingHostValve = createRequestTrackingHostValve(sessionCookieName, _currentRequest); final Context context = _manager.getContext(); context.getParent().getPipeline().addValve(_trackingHostValve); _trackingContextValve = createRequestTrackingContextValve(sessionCookieName);
@BeforeMethod public void setup() throws LifecycleException, ClassNotFoundException, IOException { _manager = mock( SessionManager.class ); final Context context = new StandardContext(); when( _manager.getContext() ).thenReturn( context ); // needed for createSession // Manager.getContainer no longer available in tc 8.5+ if(_managerHasGetContainer) { when( _manager.getContainer() ).thenReturn( context ); } when( _manager.newMemcachedBackupSession() ).thenAnswer(new Answer<MemcachedBackupSession>() { @Override public MemcachedBackupSession answer(final InvocationOnMock invocation) throws Throwable { return newMemcachedBackupSession( _manager ); } }); final MemcachedSessionService service = new DummyMemcachedSessionService<SessionManager>( _manager ); when( _manager.createSession( anyString() ) ).thenAnswer(new Answer<MemcachedBackupSession>() { @Override public MemcachedBackupSession answer(final InvocationOnMock invocation) throws Throwable { return createSession(service); } }); when( _manager.readPrincipal( (ObjectInputStream)any() ) ).thenReturn( createPrincipal() ); when( _manager.getMemcachedSessionService() ).thenReturn( service ); when( _manager.willAttributeDistribute(anyString(), any())).thenReturn(true); }
public void shutdown() { _log.info( "Stopping services." ); _manager.getContext().getParent().getPipeline().removeValve(_trackingHostValve); _manager.getContext().getPipeline().removeValve(_trackingContextValve); _backupSessionService.shutdown(); if ( _lockingStrategy != null ) { _lockingStrategy.shutdown(); } if ( _storage != null ) { _storage.shutdown(); _storage = null; } _transcoderFactory = null; _invalidSessionsCache.clear(); }
private ObjectInputStream createObjectInputStream( final ByteArrayInputStream bis ) throws IOException { final ObjectInputStream ois; ClassLoader classLoader = null; if ( _manager != null && _manager.getContext() != null ) { classLoader = _manager.getContainerClassLoader(); } if ( classLoader != null ) { ois = new CustomObjectInputStream( bis, classLoader ); } else { ois = new ObjectInputStream( bis ); } return ois; }
private void waitForSessionExpiration(final boolean sticky) throws InterruptedException { final SessionManager manager = _tomcat1.getManager(); assertEquals( manager.getMemcachedSessionService().isSticky(), sticky ); final Container container = manager.getContext(); final long timeout = TimeUnit.SECONDS.toMillis( sticky ? container.getBackgroundProcessorDelay() + manager.getMaxInactiveInterval() : 2 * manager.getMaxInactiveInterval() ) + 1000; Thread.sleep( timeout ); }
protected MemcachedNodesManager createMemcachedNodesManager(final String memcachedNodes, final String failoverNodes) { final Context context = _manager.getContext(); final String webappVersion = Reflections.invoke(context, "getWebappVersion", null); final StorageKeyFormat storageKeyFormat = StorageKeyFormat.of(_storageKeyPrefix, context.getParent().getName(), context.getName(), webappVersion); return MemcachedNodesManager.createFor( memcachedNodes, failoverNodes, storageKeyFormat, _storageClientCallback); }