Повторное использование плагина Eclipse вне затмения

Интерфейс TaskExecutor является интерфейсом «забей и забудь», который используется, когда вам все равно, когда задача завершится. Это самая простая асинхронная абстракция, которую предлагает Spring.

Тем не менее, существует расширенный интерфейс, AsyncTaskExecutor , который предоставляет дополнительные методы, включая submit() методы, которые возвращают Future, что позволяет вам ждать результата.

Spring предоставляет класс ThreadPoolTaskExecutor , который реализует как TaskExecutor, так и AsyncTaskExecutor.

В вашем конкретном случае я бы повторно реализовал Runnable как Callable и возвратил бы commandResults из метода Callable.call(). Затем метод getCommandResults можно переопределить следующим образом:

public List getCommandResults(String command) {
   Future> futureResults = taskExecutor.submit(new CommandTask(command));
   return futureResults.get();
}

Этот метод отправит задачу асинхронно, а затем дождется ее завершения, прежде чем вернуть результаты, возвращенные методом Callable.call(). Это также позволяет вам избавиться от поля commandResults.

7
задан hawkeye 21 June 2009 в 01:45
поделиться

2 ответа

Не совсем, потому что вам нужен контейнер времени выполнения Equinox. вы можете запустить плагин, используя исполняемый файл eclipse, а в качестве приложения см.

http://wiki.eclipse.org/FAQ_How_do_I_create_an_application%3F

Фактически вы создаете org.eclipse. core.runtime.applications точка расширения.

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

4
ответ дан 7 December 2019 в 07:50
поделиться

В конечном итоге плагины по-прежнему представляют собой Java-код. Будет ли ваш плагин работать за пределами Eclipse, зависит от его зависимостей. Если ваши пакеты больше ориентированы на OSGi, вы, вероятно, можете работать на другой платформе, например Felix .

Если вы будете осторожны, вы можете работать полностью вне OSGi. Например, реестр Equinox может работать автономно вне OSGi. (См. эту страницу тестирования , «Часть IV. Автономный запуск реестра»)

3
ответ дан 7 December 2019 в 07:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: