Сначала немного фона :
Я работаю над корпоративным приложением (ear) с модулем EJB и модулем Application Client.Я также использую hibernate JPA для персистентности и swingx для GUI.Это единственные сторонние банкоматы.Это приложение развернуто на Glassfish.
Все шло хорошо, пока я не развернул свое приложение в первый раз и не попытался запустить его через Java Web Start.Я столкнулся с крупными дорожными блокировщиками - JWS не любит hibernate3.jar, жалуется, что он не подписан, хотя это так.Я описал проблему здесь , если вам интересно.В любом случае это может быть связано с этой неразрешенной ошибкой в JVM.Есть и другие вещи, которые мне не нравятся в JWS, но это не имеет значения.
Текущие подходы
Учитывая эту проблему, я подумалЯ бы сам развернул приложение (я планирую написать какой-нибудь автообновитель, чтобы все было синхронизировано).Поэтому я следовал инструкциям здесь и все было круто, за исключением того факта, что контейнер приложения, который мне нужно развернуть на клиенте, составляет около 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 ...
Спасибо за чтение этого длинного поста!
РЕДАКТИРОВАТЬ:
Некоторые деталио моей среде:
- Java 1.6.0_21
- GF 3.0.1
- Windows (XP / 2003/7)