我有一个简单的bean声明如下
@Local(LocalInt.class)
@Remote(RemoteInt.class)
@Stateless(name="name")
public MyEJB_Implementation {
//methods
}
如您所见,它是一个具有本地接口(用于本地客户端)和远程接口(用于远程客户端)的单个 bean。
客户端(远程和本地)检索实例如下:
ctx = new InitialContext(environment);
ctx.lookup("name");
容器如何决定它是否将交付实现LocalInt
接口或RemoteInt
接口的代理?(因为我使用相同的“名称”进行查找)。
我的意思是,JNDI 注册表是否以某种方式知道查找是在同一个 JVM 中还是从远程服务器完成的?
而且,这种区别(对于本地和远程调用)是否与“查找”的语义相冲突?(它应该恰好为一个名称注册了零个或一个对象,在这种情况下,似乎有 2 个对象(本地和远程)在同一个名称下)。
谢谢你。