Статьи

Судоку: веб-разработка на основе OSGi на платформе NetBeans

Давайте приступим к разработке веб-приложения на основе OSGi на платформе NetBeans. Сегодня я исследовал игру Судоку Питера Криенса в контексте нового приложения на платформе NetBeans. В итоге я запустил игру Sudoku, запустив ее из приложения на платформе NetBeans:

Как сделать это самостоятельно? Т.е. как настроить веб-приложение, которое может одновременно использовать систему модулей NetBeans, а также контейнер Equinox? Читать дальше.

  1. Загрузите последнюю версию среды IDE NetBeans 6.9 . На момент написания он находился в стадии разработки, доступны ежедневные сборки, выпущены основные этапы, и бета-версия не за горами.
  2. Создайте новое приложение платформы NetBeans поверх Equinox с помощью этого шаблона:

  3. Вы можете запустить приложение, полученное из приведенного выше шаблона, вы увидите приложение, содержащее окно, отображающее все модули NetBeans и пакеты OSGi, которые составляют ваше приложение.
  4. Теперь загрузите 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
  5. Щелкните правой кнопкой мыши приложение в окне «Проекты», выберите «Свойства», перейдите на вкладку «Библиотеки», нажмите «Добавить кластер», а затем перейдите к папке, в которой находятся вышеуказанные 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-файлы, упомянутые ранее.

  6. Затем добавьте эту строку в файл конфигурации «project.properties» приложения, в котором указано, что заставка не будет отображаться (поскольку вы не видите заставку в веб-приложении, не так ли?) И порт для развертывания. приложения:

    run.args.extra=--nosplash -J-Dorg.osgi.service.http.port=8080
  7. Запустите приложение! Все пакеты 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

    Тогда у вас будет приложение без графического интерфейса, то есть серверное приложение, хорошо подходящее для модульной веб-разработки.

  8. Теперь поместите этот URL-адрес в браузер (при необходимости используйте URLDisplayer.getDefault () из API утилит пользовательского интерфейса NetBeans, чтобы программно открыть браузер в нужном месте), и «index.html», определенный в игре «Судоку», будет развернут, отображенный в браузер, и вы можете начать играть в игру Suduko:

    http://localhost:8080/rpc/sudoku/index.html

Поздравляю, ваше первое веб-приложение на основе OSGi на платформе NetBeans + контейнер Equinox, который будет частью IDE NetBeans 6.9.

Дальнейшее чтение:

Также читайте Новые крутые инструменты для разработчиков OSGi .