我在J2EE服务器上有各种EJB,具有不同的安全角色。
现在,从Java Swing客户端应用程序,当我将用户登录到服务器时,我想要发现用户可以访问哪些EJB,而不是实际尝试创建它们或调用它们。
我想这样做的原因是根据可用的EJB调整用户界面。
例如,如果当前用户可以使用“AdministerMetadata”EJB,我想显示用于管理元数据等的菜单选项。
我可以从客户端内的已知EJB的预定义列表中进行查询,因此我不需要它是完全动态的。
我不想创建一个特殊的EJB来返回这个访问信息,我想避免不得不尝试调用方法并捕获Exceptions来进行发现。
我打算在JBoss上使用该解决方案,但如果可能的话,我更愿意采用标准解决方案。
这可能吗?如果是这样的话?
答案 0 :(得分:1)
据我所知,J2EE中没有任何内容可以在客户端为您提供此信息。即使在服务器端,EJBContext也只会给你调用者拥有的角色以及调用者的主体(例如登录名)。
除了拥有一个可以在客户端查询的额外会话Bean之外,我没有别的办法,它会检查服务器端的EJBContext,告诉客户端当前用户拥有哪些角色。