Dependency injection 在struts2操作中注入EJB?

Dependency injection 在struts2操作中注入EJB?,dependency-injection,struts2,annotations,ejb-3.0,Dependency Injection,Struts2,Annotations,Ejb 3.0,我正在使用struts2,EJB3.0。。。 我的需求是从struts2操作类调用EJB层。 我希望有两种方法可以实现这一目标: 1.Using @EJB annotation in Action class 2.Using JNDI look up 我两个都试过了, 但是JNDI查找的问题是,即使我使用了正确的命名,我也会得到NameNotFoundException。因此,最终,我的团队转向了另一种使用@EJB注释的方法 但是,当我使用@EJB注释时,我认为它没有被注入: 我得到了Nul

我正在使用struts2,EJB3.0。。。 我的需求是从struts2操作类调用EJB层。 我希望有两种方法可以实现这一目标:

1.Using @EJB annotation in Action class
2.Using JNDI look up 
我两个都试过了, 但是JNDI查找的问题是,即使我使用了正确的命名,我也会得到NameNotFoundException。因此,最终,我的团队转向了另一种使用@EJB注释的方法

但是,当我使用@EJB注释时,我认为它没有被注入:

我得到了NullPointerException

代码:

 @EJB(mappedName="BeanLocal/local")
    BeanLocal bean ;
谁能建议我进一步做些什么。。。
另外,如果SOF中有任何链接,请务必联系我,因为我没有发现任何与此相关的内容

您不能在Struts 2操作类中使用传统的依赖项注入,因为操作是不受管理的。但是,有一种方法可以通过使用or来实现这一点。
您也可以使用JNDI查找,但语法取决于您的服务器。您最好的选择是根据您拥有的内容检查文档,…

您不能在Struts 2操作类中使用传统的依赖项注入,因为操作是不受管理的。但是,有一种方法可以通过使用or来实现这一点。
您也可以使用JNDI查找,但语法取决于您的服务器。您最好的选择是根据您所拥有的内容检查文档,

我也遇到了同样的问题,下面是我如何解决它的

正如Shinosha所说,@EJB注释将无法工作,因为操作类由Struts容器管理

为了使用JNDI查找,我必须使bean@Remote并指定一个mappedName。那么代码如下所示,这取决于您使用的服务器,在我的例子中是Weblogic:

Context ctx = new InitialContext();
MyBean bean= (MyBean) ctx.lookup("MyBeanMappedName#myapp.MyBean");

查找字符串应该是bean的完全限定名。

我遇到了同样的问题,下面是我如何解决它的

正如Shinosha所说,@EJB注释将无法工作,因为操作类由Struts容器管理

为了使用JNDI查找,我必须使bean@Remote并指定一个mappedName。那么代码如下所示,这取决于您使用的服务器,在我的例子中是Weblogic:

Context ctx = new InitialContext();
MyBean bean= (MyBean) ctx.lookup("MyBeanMappedName#myapp.MyBean");

查找字符串应该是bean的完全限定名。

我编写了以下拦截器来解决这个问题。查看并分享您可能获得的任何反馈:


我编写了以下拦截器来解决这个问题。查看并分享您可能获得的任何反馈:


CDI插件可能是最好的方法,但是你也可以手动操作,一个la。CDI插件可能是最好的方法,但是你也可以手动操作,一个la。