2011-05-02 46 views
0

我有一個Java EE項目,其中包含一個包含遠程有狀態Bean的EJB。如何訪問偵聽器中的有狀態bean

我有一個GUI的企業應用程序。

我在我的GUI中有監聽器,但我的問題是,我無法訪問我的Bean在按鈕偵聽器(以檢查用戶名和密碼)。

我使用netBeans和glassFish。

查找豆類我用:

ctx.lookup("java:comp/env/BeanStateful"); 

但很顯然,聽者改變的背景下,它不工作了。

+0

因此,GUI是一個訪問遠程EJB的外部Java桌面程序。嗯,你可以發佈一些代碼嗎?您是否能夠在偵聽器之外訪問遠程EJB **? – 2011-05-02 14:28:48

回答

1

偵聽器可能運行在沒有JavaEE上下文的線程上。嘗試從主線程獲取java:comp/env上下文,然後僅從偵聽器中查找()bean名稱。例如:

// Member variables 
private Context _javaCompEnvContext; 
... 

// Main thread 
_javaCompEnvContext = ctx.lookup("java:comp/comp/env"); 
... 

// Listener thread 
BusinessIntf bean = _javaCompEnvContext.lookup("BeanStateful"); 
+0

你知道,我知道我不知道什麼時候使用RMI會話會話。這是在規範覆蓋的地方?或者說,規範中的哪些地方覆蓋了?有人知道嗎? – 2011-05-02 16:23:07

+0

SFSB將在可配置的時間量後過期(EJB 3.1中的@StatefulTimeout),但它們也可以顯式刪除(@Remove方法)。 SFSB生命週期獨立於本地和遠程,它也獨立於HTTP會話。有些供應商比其他供應商更好地將HTTP會話與SFSB集成在一起。 – 2011-05-02 20:54:41

相關問題