两个会话Bean可以实现相同的远程接口吗?

时间:2015-03-08 16:57:35

标签: java-ee ejb ejb-3.1 glassfish-4

我是ejb的新手。我想知道可以两个会话bean实现相同的远程(本地)接口,如果不是为什么?

欢迎使用代码示例。

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

是的,他们可以。

示例:

public interface NodeService {

    public void start();
}

首次实施:

import javax.ejb.Local;
import javax.ejb.Remote;
import javax.ejb.Stateless;

@Stateless
@Remote(NodeService.class)
public class NodeService1 implements NodeService {

    @Override
    public void start() {
    }

}

第二次实施:

import javax.ejb.Local;
import javax.ejb.Remote;
import javax.ejb.Stateless;

@Stateless
@Remote(NodeService.class)
public class NodeService2 implements NodeService {

    @Override
    public void start() {
    }

}

另见:

答案 1 :(得分:1)

是的,你可以。

您可以通过任意数量的bean实现任何接口(本地和远程),但是您需要指定要注入的特定bean。

对于简单示例,您可以使用beanName属性:

@Remote
public interface Worker {}    

//

@Stateless(name = "firstBean")
public class Bean1 implements Worker {}

//

@Stateless(name = "secondBean")
public class Bean2 implements Worker {}

//
@Stateless
public class LogicBean {
  @EJB(beanName = "firstBean")
  private Worker worker1;

  @EJB(beanName = "secondBean")
  private Worker worker2;
}

您也可以使用jndi namesmappedName属性。

另见:

https://developer.jboss.org/thread/230291?tstart=0