Bartłomiej N created WW-5089:
--------------------------------
Summary: @PreDestroy callbacks not invoked on injected beans
Key: WW-5089
URL: https://issues.apache.org/jira/browse/WW-5089
Project: Struts 2
Issue Type: Bug
Components: Plugin - CDI
Affects Versions: 2.5.22
Environment: Apache Tomcat 9.0.31, Open JDK 13.0.2
Reporter: Bartłomiej N
I have web app deployed on tomcat with:
{code:xml}
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.5.22</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-cdi-plugin</artifactId>
<version>2.5.22</version>
</dependency>
<dependency>
<groupId>org.jboss.weld.servlet</groupId>
<artifactId>weld-servlet-core</artifactId>
<version>3.1.5.Final</version>
</dependency>
{code}
and:
{code:xml}
<listener>
<listener-class>org.jboss.weld.environment.servlet.Listener</listener-class>
</listener>
<resource-env-ref>
<resource-env-ref-name>BeanManager</resource-env-ref-name>
<resource-env-ref-type>
javax.enterprise.inject.spi.BeanManager
</resource-env-ref-type>
</resource-env-ref>
{code}
as CDI bootstrap in web.xml and empty beans.xml in META-INF directory. There
is also context.xml for Tomcat in webapp/META-INF:
{code:xml}
<?xml version='1.0' encoding='utf-8'?>
<Context>
<Resource name="BeanManager"
auth="Container"
type="javax.enterprise.inject.spi.BeanManager"
factory="org.jboss.weld.resources.ManagerObjectFactory"/>
</Context>
{code}
In app there is a simple CDI bean:
{code:java}
public class CDIBean {
@PostConstruct
private void postConstruct() {
//some code
}
@PreDestroy
private void preDestroy() {
//some code
}
}
{code}
when is use it in Struts action:
{code:java}
class MyAction extends ActionSupport implements SessionAware {
@Inject
private CDIBean bean;
Strign execute() {
//some code
}
}
{code}
@postConstruct callback is invoked and bean is injected correctly, but after
request completion @preDestroy is not invoked.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)