我想訪問無接口Singleton MySingleton
的多個實例singletonA
和singletonB
。這些實例中的另一單例類Configurator
首先定義:EJB 3.1的多個實例無接口Singleton /有狀態會話Bean
MySingleton.java
@Singleton
@LocalBean
public class MySingleton {
...
}
Configurator.java
@Singleton
@Startup
@LocalBean
public class Configurator {
@EJB MySingleton singletonA;
@EJB MySingleton singletonB;
}
上面的代碼,appearently工作。
現在,我需要在一個消息驅動Bean注入MySingleton的這2個實例:
MDB.class
@Stateless
public class MDB implements MessageListener {
@EJB (lookup="?") MySingleton singletonA;
@EJB (mappedName="??") MySingleton singletonB;
}
但在這一點上,我完全失去了。我知道我可以通過將2個實例定義爲一個獨特接口的2個(空)實現來使事情更簡單。但我有一些問題,因爲該類包含一些非靜態字段,所以我無法將其定義爲接口。
由於MDB的性質EDIT
,我無法通過引用傳遞的單身。 最後,我想避免創建兩個相同的MySingleton實現。
感謝收到的答案,我一直在重新思考整個架構,我必須同意MySingleton定義爲有狀態的事實也會很好。
基於編輯:單身人士通常與Stateful大不相同,但他們更符合Stateless bean。當你重新設計你的應用程序時,你可以考慮這個事實。無狀態和Singleton都在請求的基礎上工作(一般情況下)並且不保持狀態。 – Bala 2012-03-07 20:44:44