【问题标题】:WebSphere 7. Inject EJB from another applicationWebSphere 7. 从另一个应用程序注入 EJB
【发布时间】:2012-02-17 08:27:51
【问题描述】:

我正在尝试使用 @EJB 注释注入 EJB:

  • 当我将 EJB 注入同一耳朵的另一个 EJB 时,它工作正常。
  • 当我将一个 EJB 从另一个耳朵注入另一个 EJB 时 服务器出现异常:

EJB 在调用 方法“sayHello”。异常数据:javax.ejb.EJBException: Injection 失败;嵌套异常是: com.ibm.ejs.container.EJBNotFoundException:带接口的 EJB com.mycompany.myapp.ejb.test2 不在应用程序 myapp1 中

我正在使用 WebSphere 7 和 EJB 3.0。当我自己进行 jndi 查找时,它工作正常。如何让容器知道从哪里注入远程 bean?

myapp1.ear 包含以下内容:myapp1.jar(EJB 所在的位置)

myapp1 EJB:

package com.mycompany.myapp1.ejb.test1;

@Remote
public interface HelloEjb1 { 
    public String sayHello();
}

EJB 实现:

package com.mycompany.myapp.ejb.test1;

@Stateless
public class HelloEjbImpl1 implements HelloEjb1 {

    @EJB
 HelloEjb2 helloEjb2;

    @Override
    public String sayHello() {
        return HelloEjb2.sayHello();
    }
}

myapp2.ear 包含以下内容:myapp2.jar(EJB 所在的位置)

myapp2 EJB:

package com.mycompany.myapp2.ejb.test2;

@Remote
public interface HelloEjb2 { 
    public String sayHello();
}

EJB 实现:

package com.mycompany.myapp2.ejb.test2;

@Stateless
public class HelloEjbImpl2 implements HelloEjb2 {

    @Override
    public String sayHello() {
        return "Hello";
    }
}

【问题讨论】:

    标签: java websphere ejb-3.0


    【解决方案1】:

    在部署应用程序时指定绑定(12),或在客户端 (myapp1) EJB 模块中包含 META-INF/ibm-ejb-jar-bnd.xml。它看起来像这样:

    <ejb-jar-bnd
        xmlns="http://websphere.ibm.com/xml/ns/javaee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-ejb-jar-bnd_1_0.xsd"
        version "1.0">
      <session name="HelloEjbImpl1">
        <ejb-ref name="com.mycompany.myapp.ejb.test1/helloEjb2"
            binding-name="myapp2/myapp2.jar/HelloEjbImpl2#com.mycompany.myapp1.ejb.test1.HelloEjb1"
      </session>  
    </ejb-jar-bnd>
    

    如果您使用@EJB(name="myrefname"),则可以简化ejb-ref name="..."。如果您的 myapp2.jar 包含带有 &lt;interface class="..." binding-name="..."/&gt; 元素的类似绑定文件,则可以简化绑定名称。

    【讨论】:

    • 您能否详细解释一下第一种方法(部署应用程序时的绑定)?谢谢。
    • 我已更新以添加一些信息中心链接。信息中心有很多信息,但如果您想要详细的答案,可能会更容易开始一个新问题。
    猜你喜欢
    • 1970-01-01
    • 2012-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多