首先一點背景:薄(NER)獨立客戶端企業應用
我工作的企業應用程序(EAR)與EJB模塊&應用程序客戶端模塊。我也使用休眠JPA進行持久化,並使用swingx進行GUI。那些是唯一的第三方atm。此應用程序部署在Glassfish上。
一切都很順利,直到我第一次部署我的應用程序並嘗試通過Java Web Start啓動它。我碰到了主要的路障--JWS不喜歡hibernate3.jar,抱怨它沒有簽名,儘管它是。如果您有興趣,我已經描述了問題here。無論如何,它可能與JVM中的這個unresolved bug有關。還有其他一些我不喜歡的JWS,但現在並不重要。
電流接近
考慮到這個問題,我想我會部署自己的應用程序(我打算寫某種自動更新,以保持一切同步)。所以我遵循here的指示,一切都很酷,除了我需要部署到客戶端的應用程序容器大約是40 MB!。太過分了!
好的,所以我說我將刪除應用程序容器,創建一個獨立的客戶端通過JNDI執行EJB查找並且只包含最小值。
在這裏我卡住了!
這是JNDI查找我用:
Properties prop = new Properties();
prop.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.enterprise.naming.SerialInitContextFactory");
prop.put("org.omg.CORBA.ORBInitialHost", "bogdan-pc");
prop.put("org.omg.CORBA.ORBInitialPort", "3700");
try {
InitialContext ctx = new InitialContext(prop);
DatabaseCacheEJBRemote service = (DatabaseCacheEJBRemote) ctx.lookup("ejbs.DatabaseCacheEJBRemote");
System.out.println("count: " + service.getProductionCount());
} catch (NamingException ex) {
Logger.getLogger(MyFrame.class.getName()).log(Level.SEVERE, null, ex);
}
1)我想,如果我包括的appserv-rt.jar中& javaee.jar應該夠了。顯然我需要GF的其他東西......問題是我需要部署到客戶端以獲得EJB的查找工作的最低限度是什麼?
2)爲什麼我需要包含所有的ejb模塊依賴關係(如hibernate庫)?我沒有在我的客戶端東西從休眠狀態的任何地方使用...
感謝您閱讀這篇長文章!
編輯:
關於我的環境中的一些細節:
- 的Java 1.6.0_21
- GF 3.0.1
- 的Windows(XP/2003/7)
GF什麼版本的? – 2010-09-05 20:38:47
我正在使用GF 3.0.1 – Bogdan 2010-09-06 04:27:35