Сначала немного фона:Thin (Нер) автономный клиент для корпоративных приложений
Я работаю над приложением предприятия (EAR) с модулем EJB & модуль клиентского приложения. Я также использую hibernate JPA для настойчивости и swingx для GUI. Это единственные сторонние стороны. Это приложение развернуто на Glassfish.
Все шло хорошо, пока я не развернул свое приложение в первый раз и не начал его запускать с помощью Java Web Start. Я попал в крупные блокировщики дорог - JWS не любит hibernate3.jar, жалуется, что он не подписан, хотя это так. Я описал проблему here, если вам интересно. В любом случае, это может быть связано с этим unresolved bug в JVM. Есть и другие вещи, которые мне не нравятся в JWS, но это не имеет значения сейчас.
Современных подходы
Учитывая эту проблему, я думал, что я развернуть приложение сам (я планирую написать какое-то автоматическое обновление, чтобы держать все синхронизированный). Поэтому я выполнил инструкции от here, и все было круто, за исключением того факта, что контейнер приложения, который мне нужно развернуть для клиента, составляет около 40 МБ !!!. Это слишком!
Хорошо, поэтому я сказал, что я сброшу контейнер приложения, создайте автономный клиент, выполнив EJB-поиск через JNDI и включив только минимум.
И вот я застрял!
Это поиск 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 ...
Спасибо, что прочитали этот длинный пост!
EDIT:
Некоторые подробности о моей среде:
- Java 1.6.0_21
- GF 3.0.1
- Windows (XP/2003/7)
Какой версии GF? –
Я использую GF 3.0.1 – Bogdan