我在glassfish v4上运行,我使用了messagedriven bean。目前我正在定义bean在glassfish-ejb-jar.xml
中运行的主体,如:
<enterprise-beans>
<ejb>
<ejb-name>MessageConsumerBean</ejb-name>
<principal>
<name>MDBPrincipal</name>
</principal>
是否可以仅使用注释来执行相同操作,例如@MessageDriven
?
答案 0 :(得分:1)
根据https://java.net/downloads/ejb-spec/mdb.no-method.interface.pdf第5.4.14节第133页,可以在安全上下文中传播Principal ,但详细信息不受EJB规范的约束。换句话说,它是一个平台相关的功能。
可以使用@RunAs如果需要为MDB授予特定角色来运行某些受保护的@RolesAllowed方法。
如果您需要使用Principal来处理某些应用程序逻辑,我担心在您的情况下,只有依赖于平台的解决方案,如RunAsPrincipal(JBoss)或glassfish-ejb-jar.xml。