Хелпикс

Главная

Контакты

Случайная статья





К этапу 7



Подготавливаем пару Enterprise App (EJB+JSF) + App Client (JavaFX) и сервер приложений GlassFish, на котором они развертываются, к использованию в реальных условиях

Исправляем недостаток оконного интерфейса JavaFX-клиента: содержимое должно подстраиваться под размеры окна

 

1. На данный момент корректные развертывание, получение клиентского фасада и его запуск обеспечиваются автоматически сгенерированным сценарием сборщика проектов Ant, входящего в состав среды разработки NetBeans. Во-первых, необходимо отвязаться от среды разработки, чтобы клиентское приложение запускалось самостоятельно. Во-вторых, клиентское приложение должно запускаться на любой ОС, установленной на любом настольном или мобильном компьютерном устройстве;

2. Для решения первой проблемы проследим, какие действия совершает сборщик проекта, чтобы подготовить и запустить клиентское приложение. В среде разработки заходим в меню Сервис – параметры – Java – Ant – устанавливаем отметку на чекбоксе «Всегда показывать вывод» и выбираем из выпадающего списка «Уровень детализации» пункт «Отладка». Сохраняем изменения, запускаем сборку и выполнение проекта клиентского приложения;

3. На основании информации, полученной из консоли отладки, становится понятной последовательность действий, которые мы должны выполнить, подражая среде разработки. Сначала нужно очистить и собрать проект клиента. Полученный файл из каталога dist (например TAClient. jar) нужно развернуть на сервере приложений. Запускаем сервер приложений. В браузере переходим в веб-консоль управления соответствующим сервером (localhost: 4848), открываем раздел Applications. Кликаем Deploy, выбираем файл jar, из выпадающего списка выбираем тип App Client, запускаем развертывание.

4. После успешного развертывания кликаем по имени приложения в разделе Applications, кликаем Download Client Stubs, сохраняем архив на локальном носителе. Распаковываем архив в отдельный каталог, который можно будет переносить на другие компьютеры. Видим, что теперь к основному файлу прилагается файл фасада (например, TAClientClient. jar), а основной файл TAClient. jar находится в каталоге TAClientClient. Копируем этот набор в подкаталог dist. В основном каталоге приложения создаем файл сценария ОС (например, StartClient. bat для Windows) и подкаталог lib для библиотек. В этом подкаталоге создаем два подкаталога – для стандартных библиотек (javaee7-endorsed) и для индивидуально подобранных библиотек (custom). В первый подкаталог копируем все файлы из каталога javaee7-endorsed среды NetBeans. Во второй – нашу собственную библиотеку, предоставляющую RMI-интерфейс (например, TradingActivityRemoteInterfase. jar), и вспомогательную готовую библиотеку, расширяющую возможности JavaFX, - controlsfx-8. 40. 12. jar;

5. В файле сценария набираем команды для запуска фасада (например, TAClientClient. jar) с использованием всех необходимых библиотек (в примере есть пути к библиотекам, находящимся на экземпляре сервера приложений, установленном на компьютере пользователя). Файл с примером команд – в прилагающемся каталоге «Client JavaFX Windows sample»;

6. В различных версиях ОС WindowsXP консольная утилита setx, необходимая для корректной работы сценария, отсутствует. Добавить ее можно, установив обновление WindowsXP-KB838079-SupportTools-ENU. exe (прилагается);

7. Теперь можно запустить клиентское приложение двойным кликом по файлу сценария. Но только на том же компьютере, где развернуто наше распределенное приложение. Чтобы решить эту проблему, нужно, в первую очередь, настроить слушателя IIOP на основном сервере приложений. В браузере переходим в веб-консоль управления сервером, Configurations – server-config – orb-listener1 – вводим сетевой адрес компьютера, на котором запущен этот сервер. Порт по умолчанию – 3700;

8. В проекте клиента в файле получения объекта доступа к удаленному сервису (в примере – RMIConnector) добавляем в создаваемый контекст уточняющие параметры:

 

Properties p = new Properties();

p. setProperty(Context. INITIAL_CONTEXT_FACTORY,

" com. sun. enterprise. naming. SerialInitContextFactory" );

p. setProperty(" org. omg. CORBA. ORBInitialHost", " 192. 168. 1. 124" );

p. setProperty(" org. omg. CORBA. ORBInitialPort", " 3700" );

mInitialContext = new InitialContext(p);

 

9. При запуске клиента его действия могут блокироваться защитными приложениями, в таком случаем необходимо сделать в ОС соответствующие разрешения.

10. По умолчанию содержимое окна клиентского приложения остается всегда тех же размеров, что и при запуске. Для того, чтобы содержимое корректно «растягивалось», заменим типы панели самого верхнего уровня и родительской панели screensframework на AnchorPane и перед вставкой в них непосредственных элементов-потомков будем настраивать привязку границ этих потомков к границам родителя:

 

//метод start файла Main. java

 

AnchorPane root = new AnchorPane();

AnchorPane. setTopAnchor(screensContainer, 0. 0);

AnchorPane. setRightAnchor(screensContainer, 0. 0);

AnchorPane. setLeftAnchor(screensContainer, 0. 0);

AnchorPane. setBottomAnchor(screensContainer, 0. 0);

 root. getChildren(). addAll(screensContainer);

 

// метод addScreen файла ScreensController,

//в котором класс теперь наследуется от AnchorPane

 

AnchorPane. setTopAnchor(screen, 0. 0);

AnchorPane. setRightAnchor(screen, 0. 0);

AnchorPane. setLeftAnchor(screen, 0. 0);

AnchorPane. setBottomAnchor(screen, 0. 0);

screens. put(name, screen);

 

11. TODO: создать файл сценария запуска клиента для другого типа ОС, например, сценарий sh для Linux.



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.