2011-02-06 44 views
3

我有許多使用我的業務方法的EJB。這些方法使用@RolesAllowed註釋來檢查用戶是否可以執行此方法。在我的EJB調度程序中使用@RunAs

所以我有一個調用這些EJB方法的EJB調度器。 EJB調度程序以匿名用戶身份運行,因此授權失敗。

我如何使用其他角色運行我的調度程序?對於測試建議,我使用@RunAs(「SYSTEM」)註釋運行,但我不知道這是否正確。

我的調度類

@RunAs("SYSTEM") 
public class InboxScheduler { 
    protected void inboxFileScan(Timer t) { 
     receiptFilesService.receiptFiles(); 
    } 
}

我的EJB類

@RolesAllowed("SYSTEM") 
public void receiptFiles() { 
    // do anything 
}

回答

2

是的,這是一個正確的使用。

EJB 3.2規範的第12.3.4.1節指出,您的bean的所有方法(包括超時回調方法)都將在run-as中定義標識。

從規格:的run-as標識適用於企業bean作爲一個整體,也就是給企業Bean的業務,家庭和分量接口,無接口視圖,所有的方法和/或Web服務端點;到消息驅動bean的消息監聽器方法;以及企業bean的超時回調方法;以及它們可能依次調用的所有bean的內部方法。

+0

謝謝@ victor-herrera – 2011-03-07 04:59:52