【问题标题】:Injecting EJB in struts2 action?在struts2动作中注入EJB?
【发布时间】:2012-08-24 01:02:17
【问题描述】:

我正在使用 struts2 ,EJB 3.0 ... 我的要求是从 struts2 动作类调用 EJB 层。 我希望有两种方法可以实现:

1.Using @EJB annotation in Action class
2.Using JNDI look up 

我都试过了, 但是JNDI lookup 的问题是,即使我使用了正确的命名,我也得到了NameNotFoundException。所以最终,我的团队转移到使用@EJB 注释的其他方法。

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

我收到NullPointerException

代码:

 @EJB(mappedName="BeanLocal/local")
    BeanLocal bean ;

任何人都可以建议我进一步做什么... 另外,如果 SOF 中有任何链接,请参考我,因为我没有发现任何与此相关的内容

【问题讨论】:

标签: dependency-injection struts2 annotations ejb-3.0


【解决方案1】:

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

http://gauravwrites.blogspot.com/2014/11/ejb-injection-in-struts2-interceptor.html

【讨论】:

    【解决方案2】:

    我遇到了同样的问题,这是我的解决方法。

    正如 Shinosha 所说,@EJB 注释将不起作用,因为动作类由 Struts 容器管理。

    为了使用 JNDI 查找,我必须创建 bean @Remote 并指定一个 mappedName。然后代码如下(这取决于您使用的服务器,在我的情况下为 Weblogic):

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

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

    【讨论】:

      【解决方案3】:

      您不能在 Struts 2 动作类中使用传统的依赖注入,因为动作不受管理。但是有一种方法可以通过使用CDI pluginGuice 来实现。 您也可以使用 JNDI 查找,但语法取决于您的服务器。您最好的选择是根据您所拥有的(JBoss 7.1Glassfish...)检查文档

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多