[jboss-jira] [JBoss JIRA] Commented: (EJBTHREE-827) creating timers inside start() creates duplicate timers.

David Owens (JIRA) jira-events at jboss.com
Tue Jan 9 09:27:33 EST 2007


    [ http://jira.jboss.com/jira/browse/EJBTHREE-827?page=comments#action_12349805 ] 
            
David Owens commented on EJBTHREE-827:
--------------------------------------

After walking through the debugger a bit, it appears the first timer is created by my call shown with this stack trace:

Thread [ScannerThread] (Suspended (breakpoint at line 247 in TimerServiceImpl))
	TimerServiceImpl.createTimer(Date, long, Serializable) line: 247
	TimerServiceImpl.createTimer(long, long, Serializable) line: 202
	TimerServiceFacade.createTimer(long, long, Serializable) line: 66
        <MY CLASS AND METHOD HERE>

The second timer appears to be created when EJBTimerServiceImpl.restoreTimers() is called:

Thread [ScannerThread] (Suspended (breakpoint at line 247 in TimerServiceImpl))
	TimerServiceImpl.createTimer(Date, long, Serializable) line: 247
	TimerServiceFacade.createTimer(Date, long, Serializable) line: 56
	EJBTimerServiceImpl.restoreTimers(ObjectName, ClassLoader) line: 430
	GeneratedMethodAccessor110.invoke(Object, Object[]) line: not available
	DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25
       ...
       NO REFERENCE TO MY CLASSES OR METHODS

Hope this helps track it down in some way.


> creating timers inside start() creates duplicate timers.
> --------------------------------------------------------
>
>                 Key: EJBTHREE-827
>                 URL: http://jira.jboss.com/jira/browse/EJBTHREE-827
>             Project: EJB 3.0
>          Issue Type: Bug
>    Affects Versions: EJB 3.0 RC9 - FD
>         Environment: Windows 2000, JBoss 4.0.5 (jems installer), Java 1.5
>            Reporter: David Owens
>         Attachments: SimpleTimer.zip
>
>
> Calling ctx.getTimerService().createTimer(...) within the start() method of a managed service bean creates duplicate timers.  In other words, I have a bean which is both @Management and @Service which has a method which is @Timeout.  In the start method of the bean (when the bean is deployed) I create a new timer.  But then the method marked @Timeout is called twice.  When I investigate the timers in by calling ctx.getTimerService().getTimers(), I find there are actually 2 timers with different ids, but with the exact same info.
> I have attached an example.  You will see the start() method getting called once when the bean is deployed, but then the timeout method getting called twice.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the jboss-jira mailing list