• OSGi karaf scheduler


    OSGi karaf scheduler

    karaf 中提供了定时任务管理,只需安装 feature:install scheduler 即可,然后在 karaf 容器中发布 org.apache.karaf.scheduler.Job 服务,具体见 4.19. Scheduler

    1. 环境准备

    <parent>
        <groupId>org.apache.karaf</groupId>
        <artifactId>karaf</artifactId>
        <version>4.1.5</version>
    </parent>
    <groupId>com.github.binarylei</groupId>
    <artifactId>osgi-scheduler</artifactId>
    <packaging>bundle</packaging>
    
    <dependencies>
        <dependency>
            <groupId>org.osgi</groupId>
            <artifactId>org.osgi.core</artifactId>
        </dependency>
        <dependency>
            <groupId>org.osgi</groupId>
            <artifactId>org.osgi.compendium</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.karaf.scheduler</groupId>
            <artifactId>org.apache.karaf.scheduler.core</artifactId>
        </dependency>
    </dependencies>
    
    <build>
        <resources>
            <resource>
                <directory>${project.basedir}/src/main/resources</directory>
                <filtering>true</filtering>
                <includes>
                    <include>**/*</include>
                </includes>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-bundle-plugin</artifactId>
                <configuration>
                   <!-- <obrRepository>NONE</obrRepository>
                    <instructions>
                        <_include>-bnd.bnd</_include>
                    </instructions>-->
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.aries.blueprint</groupId>
                <artifactId>blueprint-maven-plugin</artifactId>
                <version>1.5.0</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>blueprint-generate</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <scanPaths>
                        <scanPath>com.github.binarylei</scanPath>
                    </scanPaths>
                </configuration>
            </plugin>
        </plugins>
    </build>
    

    2. 编写定时任务

    package com.github.binarylei.scheduler;
    
    import org.apache.karaf.scheduler.Job;
    import org.apache.karaf.scheduler.JobContext;
    import org.apache.karaf.scheduler.Scheduler;
    import org.osgi.service.component.annotations.Component;
    
    /**
     * @author: leigang
     * @version: 2018-03-22
     */
    public class SchedulerPing implements Job {
    
        @Override
        public void execute(JobContext context) {
            context.getConfiguration();
            System.out.println("---------------");
        }
    }
    

    在 OSGI-INF/blueprint 中 blueprint.xml 配制文件发布 Job 服务:

    <?xml version="1.0" encoding="UTF-8"?>
    <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 https://osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd">
    
        <bean id="schedulerPing" class="com.github.binarylei.scheduler.SchedulerPing"/>   
        <service interface="org.apache.karaf.scheduler.Job" ref="schedulerPing">
            <service-properties>
                <entry key="scheduler.expression" value="0/2 * * * * ?"/>
            </service-properties>
        </service>    
    </blueprint>
    
  • 相关阅读:
    一起学Vue之表单输入绑定
    简单易懂的单元测试框架-gtest(二)
    简单易懂的单元测试框架-gtest(一)
    最常用设计模式-模板方法模式
    最常用设计模式-简单工厂模式
    最常用设计模式-单例模式
    端口复用后门
    内存取证工具-volatility、foremost
    python的exe反编译
    Linux加密known_hosts文件中的IP
  • 原文地址:https://www.cnblogs.com/binarylei/p/8628260.html
Copyright © 2020-2023  润新知