我是ejb的新手。我想知道可以两个会话bean实现相同的远程(本地)接口,如果不是为什么?
欢迎使用代码示例。
感谢您的帮助!
答案 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 names
到mappedName
属性。
另见: