public ServletTimer createTimer( ApplicationSession appSession, long delay, boolean isPersistent, Serializable info) { if (LOG.isDebugEnabled()) { LOG.debug( "Create timer for application " + appSession.getApplicationName() + " (delay=" + delay + ", persistent=" + isPersistent + ")"); } ApplicationSessionImpl applicationSessionImpl = (ApplicationSessionImpl) appSession; applicationSessionImpl.checkValid(); if (!applicationSessionImpl.hasTimerListener()) { throw new IllegalStateException( "No Timer listeners have been configured for this application "); } TimerListener listener = applicationSessionImpl.getServletContextInternal().getTimerListener(); ServletTimerImpl servletTimer = createTimerLocally(listener, delay, isPersistent, info, applicationSessionImpl); return servletTimer; }