Martin Centner created AS7-5911:
-----------------------------------
Summary: Statefull session beans are not (always) properly
destroyed/disposed
Key: AS7-5911
URL:
https://issues.jboss.org/browse/AS7-5911
Project: Application Server 7
Issue Type: Bug
Components: CDI / Weld, EE
Affects Versions: 7.1.0.Final
Reporter: Martin Centner
Assignee: Stuart Douglas
Statefull session beans are not always properly disposed when undeploying the application
or stopping the application server.
To reproduce this I've created the following (Arquillian) test.
It contains a simple Java bean:
@Typed
public class TestBean {
private String message;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
A corresponding producer:
public class TestBeanProducer {
private final Logger log = LoggerFactory.getLogger(getClass());
@Produces
public TestBean produceTestBean() {
log.info("produceTestBean()");
TestBean testBean = new TestBean();
testBean.setMessage("Hello World!");
return testBean;
}
public void disposeTestBean(@Disposes TestBean testBean) {
log.info("disposeTestBean()");
testBean.setMessage(null);
}
}
And finally the statefull session bean:
@Stateful
public class TestStatefullSessionBean {
private final Logger log = LoggerFactory.getLogger(getClass());
@Inject
transient TestBean testBean;
@PostConstruct
public void init() {
log.info("init()");
}
public void test() {
log.info(testBean.getMessage());
}
@PreDestroy
public void cleanUp() {
log.info("cleanUp()");
}
}
When I run this as Arquillian test in the container I get the following expected
behavior:
21:13:13,668 INFO [org.jboss.as.server.deployment] (MSC service thread 1-7) JBAS015876:
Starting deployment of "test.war"
21:13:14,083 INFO [org.jboss.weld.deployer] (MSC service thread 1-2) JBAS016002:
Processing weld deployment test.war
21:13:14,084 INFO
[org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor] (MSC
service thread 1-2) JNDI bindings for session bean named TestStatefullSessionBean in
deployment unit deployment "test.war" are as follows:
java:global/test/TestStatefullSessionBean!at.gv.stmk.zza2.test.jboss.jcr.TestStatefullSessionBean
java:app/test/TestStatefullSessionBean!at.gv.stmk.zza2.test.jboss.jcr.TestStatefullSessionBean
java:module/TestStatefullSessionBean!at.gv.stmk.zza2.test.jboss.jcr.TestStatefullSessionBean
java:global/test/TestStatefullSessionBean
java:app/test/TestStatefullSessionBean
java:module/TestStatefullSessionBean
21:13:14,106 INFO [org.jboss.weld.deployer] (MSC service thread 1-3) JBAS016005: Starting
Services for CDI deployment: test.war
21:13:14,118 INFO [org.jboss.weld.deployer] (MSC service thread 1-5) JBAS016008: Starting
weld service for deployment test.war
21:13:14,216 INFO [org.jboss.web] (MSC service thread 1-4) JBAS018210: Registering web
context: /test
21:13:14,232 INFO [org.jboss.as.server] (management-handler-thread - 11) JBAS018559:
Deployed "test.war"
21:13:14,872 INFO [at.gv.stmk.zza2.test.jboss.jcr.TestBeanProducer]
(http--0.0.0.0-8080-1) produceTestBean()
21:13:14,873 INFO [at.gv.stmk.zza2.test.jboss.jcr.TestStatefullSessionBean]
(http--0.0.0.0-8080-1) init()
21:13:14,881 INFO [at.gv.stmk.zza2.test.jboss.jcr.TestStatefullSessionBean]
(http--0.0.0.0-8080-1) Hello World!
21:13:14,884 INFO [at.gv.stmk.zza2.test.jboss.jcr.TestStatefullSessionBean]
(http--0.0.0.0-8080-1) cleanUp()
21:13:14,884 INFO [at.gv.stmk.zza2.test.jboss.jcr.TestBeanProducer]
(http--0.0.0.0-8080-1) disposeTestBean()
21:13:14,918 INFO [org.jboss.weld.deployer] (MSC service thread 1-4) JBAS016009: Stopping
weld service for deployment test.war
21:13:14,939 INFO [org.jboss.as.server.deployment] (MSC service thread 1-1) JBAS015877:
Stopped deployment test.war in 26ms
21:13:14,951 INFO [org.jboss.as.repository] (management-handler-thread - 12) JBAS014901:
Content removed from location
/Users/mcentner/java/jboss-as-7.1.1.Final/standalone/data/content/5b/20bd9c42eb5e656c3f2b396125de45636a0b8a/content
21:13:14,952 INFO [org.jboss.as.server] (management-handler-thread - 12) JBAS018558:
Undeployed "test.war"
However, when I deploy the "test.war" ...
21:31:24,792 INFO [org.jboss.as.server.deployment] (MSC service thread 1-5) JBAS015876:
Starting deployment of "test.war"
21:31:24,830 INFO [org.jboss.weld.deployer] (MSC service thread 1-8) JBAS016002:
Processing weld deployment test.war
21:31:24,831 INFO
[org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor] (MSC
service thread 1-8) JNDI bindings for session bean named TestStatefullSessionBean in
deployment unit deployment "test.war" are as follows:
java:global/test/TestStatefullSessionBean!at.gv.stmk.zza2.test.jboss.jcr.TestStatefullSessionBean
java:app/test/TestStatefullSessionBean!at.gv.stmk.zza2.test.jboss.jcr.TestStatefullSessionBean
java:module/TestStatefullSessionBean!at.gv.stmk.zza2.test.jboss.jcr.TestStatefullSessionBean
java:global/test/TestStatefullSessionBean
java:app/test/TestStatefullSessionBean
java:module/TestStatefullSessionBean
21:31:24,858 INFO [org.jboss.weld.deployer] (MSC service thread 1-1) JBAS016005: Starting
Services for CDI deployment: test.war
21:31:24,869 INFO [org.jboss.weld.deployer] (MSC service thread 1-5) JBAS016008: Starting
weld service for deployment test.war
21:31:24,929 INFO [org.jboss.web] (MSC service thread 1-8) JBAS018210: Registering web
context: /test
21:31:24,941 INFO [org.jboss.as.server] (HttpManagementService-threads - 3) JBAS018559:
Deployed "test.war"
... and click around in the JBoss AS7 Console (section "Naming") ...
21:43:01,763 INFO [at.gv.stmk.zza2.test.jboss.jcr.TestBeanProducer]
(HttpManagementService-threads - 4) produceTestBean()
21:43:01,764 INFO [at.gv.stmk.zza2.test.jboss.jcr.TestStatefullSessionBean]
(HttpManagementService-threads - 4) init()
21:43:01,766 INFO [at.gv.stmk.zza2.test.jboss.jcr.TestBeanProducer]
(HttpManagementService-threads - 4) produceTestBean()
21:43:01,767 INFO [at.gv.stmk.zza2.test.jboss.jcr.TestStatefullSessionBean]
(HttpManagementService-threads - 4) init()
21:43:01,769 INFO [at.gv.stmk.zza2.test.jboss.jcr.TestBeanProducer]
(HttpManagementService-threads - 4) produceTestBean()
21:43:01,770 INFO [at.gv.stmk.zza2.test.jboss.jcr.TestStatefullSessionBean]
(HttpManagementService-threads - 4) init()
21:43:01,771 INFO [at.gv.stmk.zza2.test.jboss.jcr.TestBeanProducer]
(HttpManagementService-threads - 4) produceTestBean()
21:43:01,772 INFO [at.gv.stmk.zza2.test.jboss.jcr.TestStatefullSessionBean]
(HttpManagementService-threads - 4) init()
21:43:01,778 INFO [at.gv.stmk.zza2.test.jboss.jcr.TestBeanProducer]
(HttpManagementService-threads - 4) produceTestBean()
21:43:01,778 INFO [at.gv.stmk.zza2.test.jboss.jcr.TestStatefullSessionBean]
(HttpManagementService-threads - 4) init()
21:43:01,781 INFO [at.gv.stmk.zza2.test.jboss.jcr.TestBeanProducer]
(HttpManagementService-threads - 4) produceTestBean()
21:43:01,781 INFO [at.gv.stmk.zza2.test.jboss.jcr.TestBeanProducer]
(HttpManagementService-threads - 5) produceTestBean()
21:43:01,782 INFO [at.gv.stmk.zza2.test.jboss.jcr.TestStatefullSessionBean]
(HttpManagementService-threads - 4) init()
21:43:01,782 INFO [at.gv.stmk.zza2.test.jboss.jcr.TestStatefullSessionBean]
(HttpManagementService-threads - 5) init()
21:43:01,784 INFO [at.gv.stmk.zza2.test.jboss.jcr.TestBeanProducer]
(HttpManagementService-threads - 4) produceTestBean()
21:43:01,784 INFO [at.gv.stmk.zza2.test.jboss.jcr.TestBeanProducer]
(HttpManagementService-threads - 5) produceTestBean()
21:43:01,784 INFO [at.gv.stmk.zza2.test.jboss.jcr.TestStatefullSessionBean]
(HttpManagementService-threads - 4) init()
21:43:01,785 INFO [at.gv.stmk.zza2.test.jboss.jcr.TestStatefullSessionBean]
(HttpManagementService-threads - 5) init()
21:43:01,786 INFO [at.gv.stmk.zza2.test.jboss.jcr.TestBeanProducer]
(HttpManagementService-threads - 4) produceTestBean()
21:43:01,787 INFO [at.gv.stmk.zza2.test.jboss.jcr.TestStatefullSessionBean]
(HttpManagementService-threads - 4) init()
21:43:01,792 INFO [at.gv.stmk.zza2.test.jboss.jcr.TestBeanProducer]
(HttpManagementService-threads - 5) produceTestBean()
21:43:01,793 INFO [at.gv.stmk.zza2.test.jboss.jcr.TestStatefullSessionBean]
(HttpManagementService-threads - 5) init()
21:43:01,795 INFO [at.gv.stmk.zza2.test.jboss.jcr.TestBeanProducer]
(HttpManagementService-threads - 5) produceTestBean()
21:43:01,796 INFO [at.gv.stmk.zza2.test.jboss.jcr.TestStatefullSessionBean]
(HttpManagementService-threads - 5) init()
21:43:01,803 INFO [at.gv.stmk.zza2.test.jboss.jcr.TestBeanProducer]
(HttpManagementService-threads - 5) produceTestBean()
21:43:01,804 INFO [at.gv.stmk.zza2.test.jboss.jcr.TestStatefullSessionBean]
(HttpManagementService-threads - 5) init()
21:43:01,805 INFO [at.gv.stmk.zza2.test.jboss.jcr.TestBeanProducer]
(HttpManagementService-threads - 5) produceTestBean()
21:43:01,806 INFO [at.gv.stmk.zza2.test.jboss.jcr.TestStatefullSessionBean]
(HttpManagementService-threads - 5) init()
21:43:01,808 INFO [at.gv.stmk.zza2.test.jboss.jcr.TestBeanProducer]
(HttpManagementService-threads - 5) produceTestBean()
21:43:01,809 INFO [at.gv.stmk.zza2.test.jboss.jcr.TestStatefullSessionBean]
(HttpManagementService-threads - 5) init()
21:43:01,812 INFO [at.gv.stmk.zza2.test.jboss.jcr.TestBeanProducer]
(HttpManagementService-threads - 5) produceTestBean()
21:43:01,813 INFO [at.gv.stmk.zza2.test.jboss.jcr.TestStatefullSessionBean]
(HttpManagementService-threads - 5) init()
... a number of instances of the TestBean are produced. When "test.war" is now
undeployed (through the console) ...
21:45:48,745 INFO [org.jboss.weld.deployer] (MSC service thread 1-2) JBAS016009: Stopping
weld service for deployment test.war
21:45:48,755 INFO [org.jboss.as.server.deployment] (MSC service thread 1-1) JBAS015877:
Stopped deployment test.war in 15ms
21:45:48,763 INFO [org.jboss.as.server] (HttpManagementService-threads - 6) JBAS018558:
Undeployed "test.war"
... none of the generated instances is being destroyed / disposed.
In our real use case this prevents us from a clean shut down of a Java Content
Repository.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see:
http://www.atlassian.com/software/jira