如何在Apache Felix中安排服务



我在捆绑包中部署了一些声明性服务OSGI。在我的捆绑包启动后,这些服务被激活,并在Thread的run((中执行一些代码。不过,我想安排一下启动run((的时间。

@Component(name = "ABC"
,immediate = true
,enabled = true)
public class test {
private volatile boolean isStarted;
@Activate
public void activate() {
System.out.println("activate");
final Thread t = new Thread() {
public void run() {
runIt();
}
};
t.setDaemon(true);
isStarted = true;
t.start();
}
@Deactivate
public void deactivate() {
System.out.println("DEactivate");
isStarted = false;
}
private void runIt() {
while (isStarted) {
System.out.println("OK");
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}

只需在类中添加一些注释

@Component(name="ABC", service = Runnable.class, immediate = true,
property = {
Constants.SERVICE_DESCRIPTION + "=COOL",
"scheduler.concurrent:Boolean=false",
"author.check:Boolean=false",
"scheduler.expression=0 * * * * ?",
"scheduler.runOn=SINGLE"
})

你可以在这里看到所有可用的选项https://github.com/apache/sling-org-apache-sling-commons-scheduler/blob/master/src/main/java/org/apache/sling/commons/scheduler/Scheduler.java

最新更新