2014-10-17 50 views
1

我在glassfish v4上運行,並使用messagedriven bean。目前,我定義豆運行在其主要的glassfish-ejb-jar.xml,如:如何使用註釋設置MessageDriven bean的主體?

<enterprise-beans> 
    <ejb> 
    <ejb-name>MessageConsumerBean</ejb-name> 
    <principal> 
     <name>MDBPrincipal</name> 
    </principal> 

是否有可能用做同樣剛剛例如註解@MessageDriven

+0

您是否試過@RunAs註釋?它不會設置調用者主體,但會允許您運行受保護的方法。 – nomoa 2014-10-21 13:12:23

+0

@nomoa是的。但正如你所說,它不會設置委託人。 – Roland 2014-10-21 13:59:51

+0

好吧,我沒有其他線索,除了挖掘GF源代碼的一個晦澀的@ActivationConfigProperty。這是MDB的一個已知限制(請參閱http://bitpop.online.fr/j/java/expert-one-on-one-j2ee-design-and- development/lib0066.html中的編程限制應用於MDB) – nomoa 2014-10-21 15:32:09

回答

1

根據https://java.net/downloads/ejb-spec/mdb.no-method.interface.pdf第5.4.14頁第133頁a主體可能在安全上下文中傳播,但細節不受EJB規範支配。換句話說,這是一個依賴於平臺的功能。

可以使用@RunAs如果MDB需要被授予特定角色來運行一些受保護的@RolesAllowed方法。

如果您需要某些應用程序邏輯的Principal,恐怕只有平臺相關的解決方案(如RunAsPrincipal(JBoss)或glassfish-ejb-jar.xml)。

相關問題