2012-02-01 74 views
0

我有在通信通道另一端創建的EJB3服務的指針(JNDI)。換句話說,它是在我們的客戶應用程序服務器上創建的。 現在我需要爲基於ADF的接口來調用EJB3。 我對界面沒有任何問題,但我正在努力如何調用EJB3。 我應該做的,我支持bean就像它是由客戶提出:帶有EJB3客戶端的Oracle ADF

public class SessionEJBClient { 
    public static void main(String[] args) { 
     try { 
      final Context context = getInitialContext(); 
      SessionEJB sessionEJB = (SessionEJB)context.lookup("MyApp-SessionEJB#org.test.SessionEJB"); 
     } catch (CommunicationException ex) { 
      System.out.println(ex.getClass().getName()); 
      System.out.println(ex.getRootCause().getLocalizedMessage()); 
      System.out.println("\n*** A CommunicationException was raised. This typically\n*** occurs when the target WebLogic server is not running.\n"); 
     } catch (Exception ex) { 
      ex.printStackTrace(); 
     } 
    } 

    private static Context getInitialContext() throws NamingException { 
     Hashtable env = new Hashtable(); 
     // WebLogic Server 10.x connection details 
     env.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory"); 
     env.put(Context.PROVIDER_URL, "t3://serverhost:serverport"); 
     return new InitialContext(env); 
    } 
} 

還是有做的任何其他方式?換句話說,什麼是正確的引用方式和調用遠程EJB3?

10X

回答

0

如果你的意思是「尊重的MVC模式」,然後覆蓋實體對象和訪問EJB從那裏似乎是最好的方式。然後,建立在它之上的VO可以爲您提供「正常」ADF BC層 - 然後創建一個應用程序模塊,並將其作爲數據控件公開,您可以聲明性地在上面創建頁面。但是,ADFBC圖層可能太厚以至於無法滿足您的需求。

因此......如果您不想使用ADF BC,則可以創建一個無狀態會話Bean(再次在模型層中)充當EJB的外觀並委託其調用。這兩種情況的好處是將業務邏輯(我假設的EJB)與View層分離,並且在ADF中,您可以從ADF BC或會話Bean層創建數據控件,並將其用作ADF Faces頁面的基礎。

+0

這一切都好,但我需要一個例子如何調用遠程EJB3或換句話說如何調用遠程EJB3。我需要例子。 – zmeda 2012-02-02 07:12:41

+0

這是你的意思嗎?http://stackoverflow.com/questions/293835/how-to-call-remote-ejb-from-standalone-client,或者這個?http://www.codeproject.com/Articles/ 25741/EJB-3-0-Remote-Session-Bean-Lookup - 這與ADF無關_它是標準的JEE – Joe 2012-02-02 15:45:07

0

ADF可以在POJO或會話EJB上工作。 因此,您將編寫一個調用EJB的Java層 - 然後將該Java層公開爲ADF數據控件,然後您可以拖放自己的方式來創建ADF UI。 http://blogs.oracle.com/shay/2009/07/java_class_data_control_and_ad.html http://blogs.oracle.com/shay/2009/01/insert_update_for_jpaejb_30_wi.html

或者,如果你寧願跳過ADF綁定層可以編寫託管bean將調用EJB,然後綁定ADF UI直接指向這些bean。