|
|||
К этапу 7 ⇐ ПредыдущаяСтр 2 из 2 Подготавливаем пару 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.
|
|||
|