【问题标题】:EJB 3.0 multiple instancesEJB 3.0 多实例
【发布时间】:2012-01-24 22:22:49
【问题描述】:

我一直在试图找出这是否可能,但无法得到答案。

我有一个 EJB 3.0 类及其本地接口。

@Local
public interface MyService {
    public String foo();
}

@Stateless
public class MyServiceBean implements MyService {
    @Resource(name="type") private String type;
    public String foo() { return type; }
}

现在,问题来了。我想定义两个使用相同类的不同名称的 EJB,这样我就可以注入两个不同的“类型”值(在 ejb-jar.xml 中定义)。

然后在不同的类中使用它,例如:

@EJB(mappedName="MyServiceBeanA")
private MyService myServiceBeanA;

@EJB(mappedName="MyServiceBeanB")
private MyService myServiceBeanB;

谢谢, 丹尼尔

【问题讨论】:

标签: ejb-3.0


【解决方案1】:

我自己没有尝试过,但我建议您尝试一下,看看它是否有效,我相信它会,但是,如果没有,那么您可以创建一个扩展两个本地接口的超级接口你想让你的 bean 实现这个新的超级接口。然后你可以这样称呼它

@Local
public interface MyService1 {
    public String foo();
}

@Local
public interface MyService2 {
    public String foo();
}



public interface SuperInterface extends MyService1, MyService2{

}

@Stateless
public class MyServiceBean implements SuperInterface {
    @Resource(name="type") private String type;
    public String foo() { return type; }
}


@EJB(mappedName="MyServiceBeanA")
private SuperInterface myServiceBeanA;

@EJB(mappedName="MyServiceBeanB")
private SuperInterface myServiceBeanB;

【讨论】:

  • 我真的试过了,还是不行。在春天,我会简单地用不同的 bean 实例名称实例化同一个类。
  • 这仍然会迫使我拥有多个接口。我正在寻找的是定义一个接口,一个实现类(可以根据注入的参数值进行自定义),并具有它的多个实例。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-02
  • 1970-01-01
  • 2013-01-02
  • 1970-01-01
相关资源
最近更新 更多