Search code examples
javajakarta-eeejb-3.0

Is the @Resource annotation applied when a Stateless EJB is deserialized?


Is the @Resource annotation on a method applied when an EJB is deserialized? I have a EJB Timer thats persisted by the container and would like to know if the transient TimerService (it's not serializable) will be injected again when the EJB is deserialized.


Solution

  • Perhaps this articles help:

    • Stateless Session Bean: the stateless session EJB is injected at creation time, and keeps it's resources along its life time.

    • Stateful Session Bean: It seems that the dependency injection only occurs at creation time. Anyway, after activation, the @PostActivate callback Handler is invoked, where you could recover your transient elements.

    Edit for adding the Java EE Tutorial link on this subject, which confirms what is exposed:

    So, as a conclusion, the answer is no, the container won't inject again your transient resources after activation, but you can implement a PostActivate handler to do it by your own means.