Сначала небольшая предыстория:
Я работаю над корпоративным приложением (ear) с модулем EJB и модулем Application Client. Я также использую JPA в спящем режиме для постоянства и swingx для графического интерфейса. Это единственные сторонние банкоматы. Это приложение развернуто на 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)? Я нигде не использую в своих клиентских материалах спящий режим...
Спасибо, что прочитали этот длинный пост!
ИЗМЕНИТЬ:
Некоторые подробности о моем окружении:
- Ява 1.6.0_21
- GF 3.0.1
- Windows (XP/2003/7)