Давайте приступим к разработке веб-приложения на основе OSGi на платформе NetBeans. Сегодня я исследовал игру Судоку Питера Криенса в контексте нового приложения на платформе NetBeans. В итоге я запустил игру Sudoku, запустив ее из приложения на платформе NetBeans:
Как сделать это самостоятельно? Т.е. как настроить веб-приложение, которое может одновременно использовать систему модулей NetBeans, а также контейнер Equinox? Читать дальше.
- Загрузите последнюю версию среды IDE NetBeans 6.9 . На момент написания он находился в стадии разработки, доступны ежедневные сборки, выпущены основные этапы, и бета-версия не за горами.
- Создайте новое приложение платформы NetBeans поверх Equinox с помощью этого шаблона:
- Вы можете запустить приложение, полученное из приведенного выше шаблона, вы увидите приложение, содержащее окно, отображающее все модули NetBeans и пакеты OSGi, которые составляют ваше приложение.
- Теперь загрузите Equinox и загрузите два пакета OSGi, которые составляют игру Sudoku. Поместите следующее в ту же папку где-нибудь на диске:
- aQute.sudoku.jar
- aQute.webrpc.jar
- javax.servlet_xxx.jar
- org.eclipse.equinox.ds_xxx.jar
- org.eclipse.equinox.http_xxx.jar
- org.eclipse.equinox.util_xxx.jar
- org.eclipse.osgi.services_xxx.jar
- org.eclipse.osgi_xxx.jar
- aQute.sudoku.jar
- Щелкните правой кнопкой мыши приложение в окне «Проекты», выберите «Свойства», перейдите на вкладку «Библиотеки», нажмите «Добавить кластер», а затем перейдите к папке, в которой находятся вышеуказанные JAR-файлы. Затем открывается мастер, который позволяет вам конвертировать JAR-файлы в «кластер», то есть набор связанных модулей / пакетов, которые будут включены в ваше приложение:
Установите для всех импортированных OSGi-пакетов значение «Включено», чтобы они были загружены и доступны во время запуска приложения.
Когда вы нажимаете кнопку «Готово», убедитесь, что ваш файл конфигурации «platform.properties» имеет такой контент, в противном случае настройте его вручную:
cluster.path.extra=netbinox:\../../path/to/my/nbsudokugame/folder
disabled.modules.extra=org.netbeans.libs.felix
cluster.path=\
${nbplatform.active.dir}/harness:\
${nbplatform.active.dir}/platform:\
${cluster.path.extra}
disabled.modules=\
org.jdesktop.layout,\
org.netbeans.api.visual,\
org.netbeans.core.execution,\
org.netbeans.core.multiview,\
org.netbeans.insane,\
org.netbeans.libs.felix,\
org.netbeans.libs.jsr223,\
org.netbeans.modules.apisupport.harness,\
org.netbeans.modules.apisupport.tc.cobertura,\
org.netbeans.modules.autoupdate.services,\
org.netbeans.modules.autoupdate.ui,\
org.netbeans.modules.core.kit,\
org.netbeans.modules.favorites,\
org.netbeans.modules.jellytools.platform,\
org.netbeans.modules.jemmy,\
org.openide.compat,\
org.openide.execution,\
org.openide.options,\
org.openide.util.enumerations
nbplatform.active=defaultПримечание . Первая строка выше указывает на папку, в которую я поместил JAR-файлы, упомянутые ранее.
- Затем добавьте эту строку в файл конфигурации «project.properties» приложения, в котором указано, что заставка не будет отображаться (поскольку вы не видите заставку в веб-приложении, не так ли?) И порт для развертывания. приложения:
run.args.extra=--nosplash -J-Dorg.osgi.service.http.port=8080
- Запустите приложение! Все пакеты OSGi и модули NetBeans в вашем приложении будут развернуты. Приложение для просмотра развернутых комплектов OSGi и модулей NetBeans также развернуто, предоставляя вам настольное приложение для мониторинга того, что развернуто в данный момент, что весьма удобно:
Кроме того, удалите весь модуль, который предоставляет окно выше. Затем удалите все модули, которые требуются вышеупомянутым окном, то есть удалите оконную систему, систему действий и все остальное … за исключением нескольких JAR-файлов, необходимых для интеграции OSGi: начальная загрузка, запуск, файловые системы, система модулей, утилиты и поиск.
cluster.path.extra=netbinox:\../../path/to/my/nbsudokugame/folder disabled.modules.extra=org.netbeans.libs.felix cluster.path=\ ${nbplatform.active.dir}/harness:\ ${nbplatform.active.dir}/platform:\ ${cluster.path.extra} disabled.modules=\ org.jdesktop.layout,\ org.netbeans.api.annotations.common,\ org.netbeans.api.progress,\ org.netbeans.api.visual,\ org.netbeans.core,\ org.netbeans.core.execution,\ org.netbeans.core.io.ui,\ org.netbeans.core.multiview,\ org.netbeans.core.nativeaccess,\ org.netbeans.core.output2,\ org.netbeans.core.ui,\ org.netbeans.core.windows,\ org.netbeans.insane,\ org.netbeans.libs.felix,\ org.netbeans.libs.jna,\ org.netbeans.libs.jsr223,\ org.netbeans.libs.junit4,\ org.netbeans.modules.apisupport.harness,\ org.netbeans.modules.apisupport.tc.cobertura,\ org.netbeans.modules.applemenu,\ org.netbeans.modules.autoupdate.services,\ org.netbeans.modules.autoupdate.ui,\ org.netbeans.modules.core.kit,\ org.netbeans.modules.editor.mimelookup,\ org.netbeans.modules.editor.mimelookup.impl,\ org.netbeans.modules.favorites,\ org.netbeans.modules.javahelp,\ org.netbeans.modules.jellytools.platform,\ org.netbeans.modules.jemmy,\ org.netbeans.modules.keyring,\ org.netbeans.modules.masterfs,\ org.netbeans.modules.nbjunit,\ org.netbeans.modules.options.api,\ org.netbeans.modules.options.keymap,\ org.netbeans.modules.print,\ org.netbeans.modules.progress.ui,\ org.netbeans.modules.queries,\ org.netbeans.modules.sendopts,\ org.netbeans.modules.settings,\ org.netbeans.modules.spi.actions,\ org.netbeans.spi.quicksearch,\ org.netbeans.swing.outline,\ org.netbeans.swing.plaf,\ org.netbeans.swing.tabcontrol,\ org.openide.actions,\ org.openide.awt,\ org.openide.compat,\ org.openide.dialogs,\ org.openide.execution,\ org.openide.explorer,\ org.openide.io,\ org.openide.loaders,\ org.openide.nodes,\ org.openide.options,\ org.openide.text,\ org.openide.util.enumerations,\ org.openide.windows nbplatform.active=default
Тогда у вас будет приложение без графического интерфейса, то есть серверное приложение, хорошо подходящее для модульной веб-разработки.
- Теперь поместите этот URL-адрес в браузер (при необходимости используйте URLDisplayer.getDefault () из API утилит пользовательского интерфейса NetBeans, чтобы программно открыть браузер в нужном месте), и «index.html», определенный в игре «Судоку», будет развернут, отображенный в браузер, и вы можете начать играть в игру Suduko:
http://localhost:8080/rpc/sudoku/index.html
Поздравляю, ваше первое веб-приложение на основе OSGi на платформе NetBeans + контейнер Equinox, который будет частью IDE NetBeans 6.9.
Дальнейшее чтение:
- Питер Криенс и игра Судоку
- Ярослав Тулач и Нетбинокс
- Запись и презентация Тони Эппла в OSGi / NetBeans
- Интеграция Гуннара Рейнсета с NetBeans-EMF ( часть 1 , часть 2 )
Также читайте Новые крутые инструменты для разработчиков OSGi .