Появилось время на самокапание, решил попробовать сервер приложений GlassFish в связке с RMI клиентом на Java. Написал простейший ejb с методом sayHello.
@Stateless
public class MainSessionBean implements MainSessionBeanRemote {
@Override
public String sayHello() {
return «Hello world!»;
}
}
Ну и в клиенте, его вызов.
try {
props.load(new FileInputStream(«jndi.properties»));
InitialContext ctx = new InitialContext(props);
MainSessionBeanRemote bean =
(MainSessionBeanRemote)ctx.lookup(
«java:global/CorpServer/CorpServer-ejb/MainSessionBean»);
System.out.println(bean.sayHello());
} catch …
Если создавать клиент средствами самого NetBeans, то все работает. Но как только пытаюсь запустить приложение из командной строки, ничего не работает, не находит нужных библиотек.
В инете готового решения проблемы не нашел. После долгой боли и мучений выработал метод получения необходимых библиотек, для стандалон клиента.
- В glassfish ищем батник package-appclient и запускаем его. Он создаёт файл glassfish5/glassfish/lib/appclient.jar
- Из этого файла из директории modules извлекаем все файлы jar и копируем к себе в проект. Почему то, если использовать сам appclient.jar ничего не работает.
- Но там не хватает двух файлов. Их придется ручками скопировать из glassfish5/glassfish/modules. Файлы: bean-validator-cdi.jar и bean-validator.jar
Все, клиент коннектится, методы вызываются.