我想浏览我的服务器的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只承载接口。
答案 0 :(得分:0)
听起来这是错误的做法。为什么您的客户需要/想知道?与实现分离的接口点是将客户端与实现更改隔离开来。如果你真的需要知道,你可以添加一个从FooServiceBean返回true的isFooServiceBean()方法,但是从所有其他实现返回false,但听起来好像设计错了。
答案 1 :(得分:0)
这不能回答你的问题,但是:
您的客户端不应该真正知道接口实现的机制。这将是一个糟糕的设计,因为它会将客户端耦合到实现而不是接口。您的bean实现类由应用程序服务器运行时管理。客户不应该意识到它的存在。