找到ejb实现类(不是接口)

时间:2013-07-08 07:12:20

标签: java-ee ejb jndi

我想浏览我的服务器的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只承载接口。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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