22 июня 2018 г.

GlassFish 5, standalone client

"Решил замахнуться на нашего Вильяма..." (с) Берегись автомобиля.

Появилось время на самокапание, решил попробовать сервер приложений 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, то все работает. Но как только пытаюсь запустить приложение из командной строки, ничего не работает, не находит нужных библиотек.

В инете готового решения проблемы не нашел. После долгой боли и мучений выработал метод получения необходимых библиотек, для стандалон клиента.
  1. В glassfish ищем батник package-appclient и запускаем его. Он создаёт файл glassfish5/glassfish/lib/appclient.jar
  2. Из этого файла из директории modules извлекаем все файлы jar и копируем к себе в проект. Почему то, если использовать сам appclient.jar ничего не работает.
  3. Но там не хватает двух файлов. Их придется ручками скопировать из glassfish5/glassfish/modules. Файлы: bean-validator-cdi.jar и bean-validator.jar
Все, клиент коннектится, методы вызываются.

Комментариев нет:

Отправить комментарий