如何在 Struts 2 动作中注入 EJB?你在用 CDI 吗?您在使用Struts2 CDI 插件吗?
更新:问题是容器没有创建 Struts 对象,Struts 是,所以容器没有机会注入任何东西。您必须使用提到的 CDI 插件才能在您的操作中启用注入。
如果您想尝试一下,请获取 Struts 2 源代码:
svn co http://svn.apache.org/repos/asf/struts/struts2/trunk/ struts2
然后cd
进入struts2
目录并运行以下命令(这将编译所需的模块struts-cdi-plugin
)
mvn install -pl plugins -am
然后获取 cdi-plugin 的来源:
svn co https://svn.apache.org/repos/asf/struts/sandbox/trunk/struts2-cdi-plugin/
并编译它:
mvn install
现在,在我的 pom.xml 中有以下依赖项:
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-cdi-plugin</artifactId>
<version>2.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.8.0.GA</version>
</dependency>
我能够在一个动作中注入一个 EJB:
public class HelloWorld extends ActionSupport {
@Inject
HelloEJB helloEjb;
@Override
public String execute() throws Exception {
setMessage(helloEjb.getMessage());
return SUCCESS;
}
private String message;
public void setMessage(String message) {
this.message = message;
}
public String getMessage() {
return message;
}
}
有关示例,请参见https://svn.apache.org/repos/asf/struts/sandbox/trunk/struts2-cdi-example/ 。