0

我想浏览我的服务器的 jndi 注册表(例如 jboss)并为每个 ejb 找到它的实现类。例如假设我有本地 bean

@Stateless(name="fooService")
public class FooServiceBean implements FooService () { ... }

and the interface

@Local
public interface FooService { ... }

我从 jndi 检索它:

Context ctx = new InitialContext();
Object obj = ctx.lookup("fooService");

现在的问题..我怎么知道 obj 是 FooServiceBean 的实例?

2013 年 9 月 25 日更新:到目前为止,我还没有发现这是可能的,实际上它是有道理的。JNDI 只托管接口。

4

2 回答 2

1

这并不能回答您的问题,但是:

您的客户不应该真正知道接口是通过哪种机制实现的。这将是一个糟糕的设计,因为它将您的客户端耦合到实现而不是接口。您的 bean 实现类由应用程序服务器运行时管理。客户不应该知道它的存在。

于 2013-09-25T14:30:09.303 回答
0

这听起来像是错误的方法。为什么您的客户需要/想知道?将接口与实现分开的目的是使客户端免受实现更改的影响。如果您真的需要知道,您可以添加一个 isFooServiceBean() 方法,该方法从 FooServiceBean 返回 true,但从所有其他实现返回 false,但听起来有些设计错误。

于 2013-07-08T17:58:22.187 回答