как мне найти класс, если я не хочу использовать банку в ОСГИ - PullRequest
0 голосов
/ 23 июня 2010

я запускаю osgi с помощью команды java: java -jar org.eclipse.osgi_3.5.1.R35x_v20090827.jar -console, а затем пакеты можно найти в каталоге ./plugins.

Есть2 вопроса(1) Я только что отредактировал 1 файл класса на локальной машине и перенес его на удаленный сервер.так что я хочу OSGI просто загрузить классы, а не банку.Как я должен это делать ?если среда OSGI не поддерживает эту функцию.Я должен упаковать jar, в котором отредактирован только один файл класса, и перенести его на удаленный сервер.это замедляет процесс упаковки и передачи всей банки.

(2), когда я запускаю команду в фоновом режиме.как я могу снова получить консоль osgi?

Ответы [ 4 ]

0 голосов
/ 08 марта 2013

Если вы используете bundleContext.installBundle (String location) для установки вашего пакета, вы можете определить папку на вашем сервере, где jar-файл не распакован. После этого вы можете скопировать только этот класс в папку сервера и вызвать команду обновления для этого пакета.

Если вы используете Eclipse с m2e и maven-bundle-plugin, вы можете просто синхронизировать каталог target / classes с папкой на вашем сервере сразу после сохранения класса (так как в этом случае MANIFEST.MF обновляется так же, как только Вы сохраняете свой файл .java)

Как видите, вы должны всегда копировать сгенерированный файл MANIFEST.MF, чтобы быть уверенным, что раздел Import-Package также обновлен.

Вы можете написать короткий сценарий оболочки (или cmd в Windows), чтобы сделать это, если вы можете подключиться к вашему серверу через ssh или telnet (например, используя felix-osgi-console или equinox-console).

0 голосов
/ 25 июня 2010

Если вы пытаетесь заменить класс в целях отладки, вы можете попробовать выполнить удаленную отладку на виртуальной машине, которая поддерживает горячую замену кода.Это позволит вам пройтись, найти проблему и исправить ее, не перезапуская OSGi.

Как только вы найдете исправление, вам нужно будет перестроить пакет.@akr правильно, что механизм упаковки для OSGi - это комплекты.

Чтобы ответить на второй вопрос, не запускайте его в фоновом режиме, если вам нужна консоль.Просто запустите команду в своей собственной оболочке.Во время разработки это не должно быть проблемой.Во время развертывания вам не следует использовать консоль для выполнения каких-либо задач.Такие технологии, как P2 от Eclipse, могут помочь в управлении развернутыми средами выполнения OSGi.

0 голосов
/ 10 декабря 2010

Ответ на вопрос 2: существуют оболочки для OSGi, которые поддерживают telnet и SSH. Использование одного из них позволяет запускать процесс в фоновом режиме, но при этом подключаться к нему (даже удаленно, очевидно).

0 голосов
/ 24 июня 2010

Там могут быть нестандартные способы загрузки классов, но нет способов сделать это с чистым OSGi. В OSGi пакет (файл jar) является пакетом доставки, который может загружаться и управляться средой OSGi. Обычно каждый пакет загружается отдельным загрузчиком классов. С этим вы многое получаете: вы указываете, какие пакеты, с какой версией пакет экспортирует или импортирует. В Манифесте вы указываете эти отношения упорядоченным образом. Это позволяет платформе OSGi управлять зависимостями, не прерывая другие пакеты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...