2017-02-14 50 views
0

我有以下設置:Wildfly 9爲遠程EJB客戶端提供服務,同時還有一些正在運行的執行某些邏輯的TimerTask實例。在Wildfly上以匿名用戶身份訪問安全的EJB 9

大多數EJB方法由遠程客戶機調用;因此,固定(通過@RolesAllowed)。 現在,其中的一些方法也將被TimerTask的服務器中來,在這種情況下,我沒有任何本金或安全上下文,這將導致EJB方法調用失敗。

我的解決方法是這樣的:

EJB:

@RolesAllowed({"readRole"}) 
public void readSomething() { 
    this.readSomethingImpl(); 
} 


public void readSomethingUnrestricted() { 
    this.readSomethingImpl(); 
} 

的readSomething()是遠程接口的一部分,readSomethingUnrestricted()是本地接口的一部分。

缺點是我有一套相當大的EJB服務方法,我不想複製所有這些方法(一個限制爲遠程,一個限制爲本地調用)。

是否有實現這個什麼更好的辦法?

謝謝!

回答

0

你應該能夠通過@javax.annotation.security.RunAs("readRole")註釋你的計時器任務來完成你想要的任務。

+0

謝謝你史蒂夫。不幸的是問題依然存在看看文檔,這個註釋是在課堂上進行的。仍然得到相同的錯誤。也許它有所不同,我的TimerTask是EAR內部WAR的一部分,它嘗試在同一個EAR的JAR中「說」EJB。 –

相關問題