[jboss-jira] [JBoss JIRA] (WFLY-4251) @DependsOn not adherent to Java EE 7 spec
Matteo Mortari (JIRA)
issues at jboss.org
Wed Jan 14 13:49:49 EST 2015
Matteo Mortari created WFLY-4251:
------------------------------------
Summary: @DependsOn not adherent to Java EE 7 spec
Key: WFLY-4251
URL: https://issues.jboss.org/browse/WFLY-4251
Project: WildFly
Issue Type: Bug
Affects Versions: 8.2.0.Final
Reporter: Matteo Mortari
Assignee: Jason Greene
Priority: Minor
*Premise*: actually, I'm leveraging this misalignment for implementing a functionality; however, I don't believe is correct behavior accordingly to Java EE 7 specs, hence reporting it.
h5. Executive summary
With reference to attached reproducer, and example scenario below; the {{@DependsOn}} annotation on wildfly 8.2.0.Final works also against Stateless EJB, but accordingly to Java EE 7 specs {{@DependsOn}} annotation:
{quote}
Used to express an initialization dependency between singleton components.
{quote}
h5. Detailed description
Assume you have a {{@Singleton}} and while on {{@PreDestroy}} you need to persist some entities, which are normally done through a Stateless EJB serving as a "Controller"/"DAO", example:
{code:java}
@Singleton
@Startup
//@DependsOn(value={"AStatelessEJB"})
public class SingletonEJB {
private static final Logger LOG = LoggerFactory.getLogger(SingletonEJB.class);
@EJB
private AStatelessEJB sl;
@PostConstruct
public void init() {
LOG.info("SingletonEJB is here.");
}
@PreDestroy
public void shutdown() {
LOG.info("SingletonEJB is about to shutdown...");
sl.dummyPersist(); // line #30
}
}
{code}
with the {{@DependsOn}} annotation currently commented, and where:
{code:java}
@Stateless(name="AStatelessEJB", mappedName="AStatelessEJB")
public class AStatelessEJB {
private static final Logger LOG = LoggerFactory.getLogger(AStatelessEJB.class);
public void dummyPersist() {
LOG.info("called dummyPersist().");
}
}
{code}
just for simulating a "controller"/"DAO" example as a Stateless EJB.
Invoking wildfly shutdown will produce the following stacktrace:
{noformat}
19:26:34,570 INFO [org.jboss.as] (Controller Boot Thread) JBAS015874: WildFly 8.2.0.Final "Tweek" started in 98671ms - Started 347 of 399 services (107 services are lazy, passive or on-demand)
19:26:45,136 INFO [org.wildfly.extension.undertow] (MSC service thread 1-7) JBAS017535: Unregistered web context: /wildfly82-dependson
...
19:26:45,213 INFO [com.acme.wildfly82_dependson.SingletonEJB] (ServerService Thread Pool -- 24) SingletonEJB is about to shutdown...
...
19:26:45,213 ERROR [org.jboss.as.ejb3.invocation] (ServerService Thread Pool -- 24) JBAS014134: EJB Invocation failed on component AStatelessEJB for method public void com.acme.wildfly82_dependson.AStatelessEJB.dummyPersist(): org.jboss.as.ejb3.component.EJBComponentUnavailableException:
JBAS014559: Invocation cannot proceed as component is shutting down
...
at com.acme.wildfly82_dependson.AStatelessEJB$$$view2.dummyPersist(Unknown Source) [classes:]
at com.acme.wildfly82_dependson.SingletonEJB.shutdown(SingletonEJB.java:30) [classes:]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.8.0_05]
{noformat}
However, with the annotation un-commented and active:
{noformat}
19:21:44,713 INFO [org.jboss.as] (Controller Boot Thread) JBAS015874: WildFly 8.2.0.Final "Tweek" started in 109462ms - Started 347 of 399 services (107 services are lazy, passive or on-demand)
...
19:22:17,908 INFO [org.wildfly.extension.undertow] (MSC service thread 1-3) JBAS017535: Unregistered web context: /wildfly82-dependson
19:22:17,971 INFO [org.wildfly.extension.undertow] (MSC service thread 1-8) JBAS017532: Host default-host stopping
...
19:22:18,017 INFO [com.acme.wildfly82_dependson.SingletonEJB] (ServerService Thread Pool -- 68) SingletonEJB is about to shutdown...
19:22:18,033 INFO [com.acme.wildfly82_dependson.AStatelessEJB] (ServerService Thread Pool -- 68) called dummyPersist().
...
19:22:18,236 INFO [org.jboss.as.server.deployment] (MSC service thread 1-4) JBAS015877: Stopped deployment wildfly82-dependson.war (runtime-name: wildfly82-dependson.war) in 334ms
{noformat}
But I'm puzzled because as stated above the Java EE specs javadoc describe the {{@DependsOn}} annotation as _Used to express an initialization dependency between singleton components._ , therefore although I'm happy it actually works, I'm puzzled about the misalignments, hence reporting it.
--
This message was sent by Atlassian JIRA
(v6.3.11#6341)
More information about the jboss-jira
mailing list