ejb3/src/main/java/org/jboss/as/ejb3/timerservice/TimerImpl.java
@Override
    public long getTimeRemaining() throws IllegalStateException, EJBException {
        // TODO: Rethink this implementation

        // first check the validity of the timer state
        this.assertTimerState();
        if (this.nextExpiration == null) {
            throw EjbLogger.EJB3_TIMER_LOGGER.noMoreTimeoutForTimer(this);
        }
        long currentTimeInMillis = System.currentTimeMillis();
        long nextTimeoutInMillis = this.nextExpiration.getTime();

        // if the next expiration is *not* in future and the repeat interval isn't
        // a positive number (i.e. no repeats) then there won't be any more timeouts.
        // So throw a NoMoreTimeoutsException.
        // NOTE: We check for intervalDuration and not just nextExpiration because,
        // it's a valid case where the nextExpiration is in past (maybe the server was
        // down when the timeout was expected)
        //      if (nextTimeoutInMillis < currentTimeInMillis && this.intervalDuration <= 0)
        //      {
        //         throw new NoMoreTimeoutsException("No more timeouts for timer " + this);
        //      }
        return nextTimeoutInMillis - currentTimeInMillis;
    }
@Override
    public long getTimeRemaining() throws IllegalStateException, EJBException {
        // TODO: Rethink this implementation

        // first check the validity of the timer state
        this.assertTimerState();
        if (this.nextExpiration == null) {
            throw EjbLogger.EJB3_TIMER_LOGGER.noMoreTimeoutForTimer(this);
        }
        long currentTimeInMillis = System.currentTimeMillis();
        long nextTimeoutInMillis = this.nextExpiration.getTime();

        // if the next expiration is *not* in future and the repeat interval isn't
        // a positive number (i.e. no repeats) then there won't be any more timeouts.
        // So throw a NoMoreTimeoutsException.
        // NOTE: We check for intervalDuration and not just nextExpiration because,
        // it's a valid case where the nextExpiration is in past (maybe the server was
        // down when the timeout was expected)
        //      if (nextTimeoutInMillis < currentTimeInMillis && this.intervalDuration <= 0)
        //      {
        //         throw new NoMoreTimeoutsException("No more timeouts for timer " + this);
        //      }
        return nextTimeoutInMillis - currentTimeInMillis;
    }
@ Override public long getTimeRemaining ( ) throws IllegalStateException , EJBException { // TODO: Rethink this implementation // first check the validity of the timer state this . assertTimerState ( ) ; if ( this . nextExpiration == null ) { throw EjbLogger . EJB3_TIMER_LOGGER . noMoreTimeoutForTimer ( this ) ; } long currentTimeInMillis = System . currentTimeMillis ( ) ; long nextTimeoutInMillis = this . nextExpiration . getTime ( ) ; // if the next expiration is *not* in future and the repeat interval isn't // a positive number (i.e. no repeats) then there won't be any more timeouts. // So throw a NoMoreTimeoutsException. // NOTE: We check for intervalDuration and not just nextExpiration because, // it's a valid case where the nextExpiration is in past (maybe the server was // down when the timeout was expected) //      if (nextTimeoutInMillis < currentTimeInMillis && this.intervalDuration <= 0) //      { //         throw new NoMoreTimeoutsException("No more timeouts for timer " + this); //      } return nextTimeoutInMillis - currentTimeInMillis ; }
{@inheritDoc}
{