2012-08-17 117 views
0

我试图用@EJB annotation来调用一个无状态bean。当我打印参考值时,它是NULL。请帮我,我下一步该怎么做完全糊涂了......@EJB依赖注入失败

代码:

@Local 
public interface BatcRunLocal { 
    public void call(Map batc); 
} 

@stateless 
public class batcRunBean implements BatcRunLocal { 
    public void call(Map batc) { 
     //Some code here . 
    } 
} 

在Struts2的Action类, 我打电话像这样:

@EJB 
package.BatcRunLocal batchRun; 

batchRun.call(Map batc); 
+0

请指定您的EJB应用程序服务器;名称和版本号。 – 2012-08-17 05:10:08

+0

我正在使用EJB 3.0,Jboss 5.1 – Esh 2012-08-17 05:19:35

回答

0

@stateless更改为@Stateless


另外,您可能会更关注代码风格。在这种情况下,类名称(batcRunBean)应该以大写字母开始:BatcRunBean

1

在Struts2的Action类,我打电话是这样的:

我很抱歉,但我不认为Struts2的行动是由容器注射。只有由容器管理的资源才能注入资源。例如,servlet,CDI bean,EJB,JAX-RS等等。

所以,我会尝试创建一个简单的servlet来获取EJB注入。如果它确实被注入,那么一切正常,只是Struts2 Action类不是由容器管理的。如果它仍然为空,那么你确实有问题,我建议查看日志,看看部署失败的位置。

如果您正在使用JBoss AS,你会在日志中看到,如果EJB部署得到:JBoss AS中是这个:-)

畅所欲言,我@Richard Sitze同意:阅读一些关于Java命名约定。

+1

实际上,我发现确实有可能将EJB注入到Struts2动作(!!)中,但它需要额外的配置:http://struts.apache.org/2.3.3 /docs/cdi-plugin.html – jpkrohling 2012-08-17 08:38:54