Как вы вводите EJB в действиях Struts 2?Вы используете 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:
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/ для примера.