两个会话 Bean 可以实现相同的远程接口吗?
Can Two Session Bean Implement Same Remote Interface?
我是 ejb 的新手。我想知道两个会话 bean 是否可以实现相同的远程(本地)接口,如果不能,为什么?
欢迎提供代码示例。
感谢您的帮助!
是的,他们可以。
示例:
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() {
}
}
另请参阅:
- EJB's - when to use Remote and/or local interfaces?
是的,你可以。
您可以通过任意数量的 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;
}
您也可以通过 mappedName
属性使用 jndi names
。
另请参阅:
我是 ejb 的新手。我想知道两个会话 bean 是否可以实现相同的远程(本地)接口,如果不能,为什么?
欢迎提供代码示例。
感谢您的帮助!
是的,他们可以。
示例:
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() {
}
}
另请参阅:
- EJB's - when to use Remote and/or local interfaces?
是的,你可以。
您可以通过任意数量的 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;
}
您也可以通过 mappedName
属性使用 jndi names
。
另请参阅: