Кварцевый планировщик и OSGI - PullRequest
2 голосов
/ 15 февраля 2011

У меня есть пакет планировщика OSGI, в котором находится кварцевый Jar Scheduler Jar.Этот пакет предоставляет только интерфейс приложения другим пакетам, и, когда регистрируется новое задание, он переносится во временную работу (которая реализует StatefulJob) и распределяется по расписанию с помощью планировщика.выставить банку с кварцевым планировщиком (чтобы он не был настолько совместим с osgi).Проблема этого подхода заключается в том, что, поскольку StatefulJob избегает параллельного выполнения задания, а у меня есть только одно реальное задание (временное задание), все мои реальные задания выполняются по одному за раз.

К сожалению, кажется, что интерфейс маркера - это единственный способ сказать, что задание является состоянием.Единственное решение, которое я смог найти, - сделать так, чтобы демон выставлял StatefulJobInterface (удаляя поддельное задание), но при этом у меня много проблем с classpath.Есть ли более простое решение для этого?

Ответы [ 3 ]

6 голосов
/ 28 сентября 2011

Используйте настоящий комплект OSGi для Quartz, например, такой, который доступен здесь:

http://ebr.springsource.com/repository/app/bundle/detail?name=com.springsource.org.quartz

Последняя доступная версия Quartz - 1.6.2.Если вам нужна более новая версия, создать свой собственный пакет довольно просто с помощью bnd или bundlor .

Тогда вы можете представить StatefulJob как сервис в любом месте вашей среды OSGi.и попросите ваш пакет планировщика зарегистрировать и отменить регистрацию этих заданий в Quartz.Более того, пусть планировщик прислушивается к любым сервисам, которые являются обертками для вашего триггера и информации о задании, например Spring CronTriggerBean или SimpleTriggerBean .Таким образом,

1) ваши внутренние службы API / OSGi не привязаны к Quartz - только пакет планирования зависит от пакета Quartz, и

2) ваши пакеты приложений могут определятьрасписание задания вместо пакета планирования, пытающегося выяснить это.

Обновление: более новые пакеты OSGi Quartz доступны из проекта ServiceMix: http://repo1.maven.org/maven2/org/apache/servicemix/bundles/org.apache.servicemix.bundles.quartz/

0 голосов
/ 21 марта 2016

Вы можете установить эти пакеты

bundle:install wrap:mvn:c3p0/c3p0/0.9.1.2
bundle:install mvn:org.quartz-scheduler/quartz/2.2.2
bundle:install wrap:mvn:org.quartz-scheduler/quartz-jobs/2.2.2

Вам понадобятся эти зависимости

       <dependency>
            <groupId>org.apache.servicemix.bundles</groupId>
            <artifactId>org.apache.servicemix.bundles.quartz</artifactId>
            <version>2.2.2_1</version>
        </dependency>

        <dependency>
            <groupId>org.quartz-scheduler</groupId>
            <artifactId>quartz</artifactId>
            <version>2.2.2</version>
        </dependency>

        <dependency>
            <groupId>c3p0</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.1.2</version>
        </dependency>
0 голосов
/ 13 сентября 2013

Здесь вы можете найти более новые комплекты Quartz OSGI (до версии 2.2.0 на момент написания):

http://mvnrepository.com/artifact/org.apache.servicemix.bundles/org.apache.servicemix.bundles.quartz

...