Java 我可以从客户端检测当前用户被授权使用的EJB吗?

Java 我可以从客户端检测当前用户被授权使用的EJB吗?,java,jakarta-ee,jboss,ejb,security-roles,Java,Jakarta Ee,Jboss,Ejb,Security Roles,我在J2EE服务器上有各种EJB,它们具有不同的安全角色 现在,在JavaSwing客户机应用程序中,当我将用户登录到服务器时,我希望发现用户可以访问这些EJB中的哪些,而无需实际尝试创建或调用它们 我想这样做的原因是根据可用的EJB调整用户界面 例如,如果当前用户可以使用“AdministerMetadata”EJB,我想显示一个用于管理元数据等的菜单选项 我可以接受从客户机中已知EJB的预定义列表中进行查询,因此我不需要以这种方式进行完全动态的查询 我不想创建一个特殊的EJB来返回这个访问信

我在J2EE服务器上有各种EJB,它们具有不同的安全角色

现在,在JavaSwing客户机应用程序中,当我将用户登录到服务器时,我希望发现用户可以访问这些EJB中的哪些,而无需实际尝试创建或调用它们

我想这样做的原因是根据可用的EJB调整用户界面

例如,如果当前用户可以使用“AdministerMetadata”EJB,我想显示一个用于管理元数据等的菜单选项

我可以接受从客户机中已知EJB的预定义列表中进行查询,因此我不需要以这种方式进行完全动态的查询

我不想创建一个特殊的EJB来返回这个访问信息,我想避免尝试调用方法和捕获异常来进行发现

我计划在JBoss上使用这个解决方案,但如果可能的话,我更喜欢标准的解决方案


这可能吗?如果是这样,怎么办?

据我所知,J2EE中没有任何东西可以在客户端向您提供这些信息。即使在服务器端,也只会提供调用方拥有的角色以及调用方的主体(例如登录名)


我认为除了拥有一个额外的会话Bean之外,没有其他方法了。您可以在客户端查询该会话Bean,它将在服务器端检查EJBContext,以告诉客户端当前用户拥有哪些角色。

谢谢!我想我可以求助于“尝试创建EJB并处理异常”的方式来发现哪些EJB是可访问的(尽管这不会告诉我关于特定于方法的访问限制的任何信息)