Uploaded image for project: 'EJB 3.0'
  1. EJB 3.0
  2. EJBTHREE-1701

getTimerService() can no longer be called in @Service start()

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Major Major
    • None
    • trunk
    • core
    • None

      Calling getTimerService() is no longer allowed from the lifecycle methods of @Service.
      Exception java.lang.IllegalStateException: getTimerService() not allowed during injection (EJB3 4.5.2).
      This occurs in the start() method of a @Service bean. The effect is to disallow setup of application-wide timers.

      This action is erroneously disallowed based on Table 2 in the EJB3 specification, section 4.5.2 (IMHO).

      Service lifecycle methods are not dependency injection methods, furthermore @Service beans are outside of the EJB3 specification.
      Lifecycle methods of a service should probably be considered business methods, not DI in the context of Table 2. They are in the @Management business interface.

      There is no workaround yet for this backwards incompatible change which breaks apps that set up application-wide timers from Services when they are migrated to 5.0.0.GA. This used to work in 4.2.x.

            arubinge@redhat.com Andrew Rubinger (Inactive)
            matt10 Matt C (Inactive)
            Votes:
            5 Vote for this issue
            Watchers:
            8 Start watching this issue

              Created:
              Updated: