我有這種結構在我的Maven項目:
的jboss-作爲7類加載ManagedBean
WEB-INF/lib
- a.jar
- Registry.class (@ApplicationScoped, @ManagedBean(eager=true)
- b.jar
- Module.class (@ApplicationScoped, @ManagedBean(eager=true)
我放在記錄在@PostConstruct註解的方法上在JBossAS7服務器上進行多次部署後,我發現有SEEMS在加載這些類時沒有特定的順序。我的意圖是始終在Module.class之前加載Registry.class。但是,這種類加載行爲,我不知道如何實現它。
在某些情況下,首先加載Registry.class,但在其他情況下,Module.class首先被加載,即使我剛剛重新啓動應用程序服務器並且沒有更改代碼。
現在我的問題是,我能做些什麼來定義在WEB-INF/lib中加載jar的順序嗎?
不同的角度:
能也有可能,這個問題是不是類加載內,但與ApplicationScoped渴望ManagedBean?我加在a.jar文件類:
- RegistryTwo.class (@ApplicationScoped, @ManagedBean(eager=true)
使a.jar文件現在包含Registry.class和RegistryTwo.class。有了這個,我希望是這樣的:
(所需的輸出)
Registry.class is invoked.
RegistryTwo.class is invoked.
Module.class is invoked.
或(我將與此問題)
Module.class is invoked.
Registry.class is invoked.
RegistryTwo.class is invoked.
但在某些情況下,我得到這個:
RegistryTwo.class is invoked.
Module.class is invoked.
... (Other Processing logs.)
Registry.class is invoked.
根據@BalusC,一個ApplicationScoped渴望ManagedBean會自動實例化在應用程序啓動( How do I force an application-scoped bean to instantiate at application startup?),並在我的代碼出現這種情況。
我只是想知道:
- 如何JSF負載/創建ApplicationScoped渴望ManagedBeans?有什麼規則可以定義訂單嗎?
- 爲什麼Registry.class在RegistryTwo.class之前/之後沒有實例化,當它們都在同一個jar文件下時,它們都是ApplicationScoped?