【发布时间】:2014-12-13 02:10:10
【问题描述】:
我在 glassfish v4 上运行,我使用消息驱动 bean。目前我正在定义 bean 在 glassfish-ejb-jar.xml 中运行的主体,例如:
<enterprise-beans>
<ejb>
<ejb-name>MessageConsumerBean</ejb-name>
<principal>
<name>MDBPrincipal</name>
</principal>
是否可以仅使用注释来做同样的事情,例如@MessageDriven?
【问题讨论】:
-
你试过@RunAs注解吗?它不会设置调用者主体,但允许您运行受保护的方法。
-
@nomoa 是的。但正如你所说,它不会设置校长。
-
好吧,除了深入研究 GF 源代码以获取一个不起眼的 @ActivationConfigProperty 之外,我没有其他线索。这是 MDB 的一个已知限制(请参阅应用到 MDB 的编程限制underpop.online.fr/j/java/…)
-
@nomoa 那么,MDB 是否没有设计为 Principal?如果是这样,那将是一个答案。
-
Principal 不会按照设计从客户端(消息发送者)传播到 MDB。这就是 MDB 中没有 Principal 的原因。如果需要为 MDB 授予特定角色,那么 RunAs 就可以了。但是,如果您需要 Principal 来处理某些应用程序逻辑,恐怕只有平台相关的解决方案,例如 RunAsPrincipal (JBoss) 或 glassfish-ejb-jar.xml 在您的情况下(找不到任何 glassfish 自定义注释)。
标签: java glassfish jms glassfish-4 message-driven-bean