使用Felix File安装来创建多个iPojo捆绑实例

时间:2018-12-12 15:17:12

标签: osgi apache-felix ipojo

我正在尝试部署具有属性的iPojo捆绑软件。捆绑包如下所示:

@Component
public class Greeter {

    @Property(name = "greeting")
    private String greeting;

    @Validate
    public void start() {
        System.out.println(greeting);
    }

}

pom.xml看起来像这样:

<groupId>com.example.my</groupId>
    <artifactId>osgi-greeter</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <dependencies>
        <dependency>
            <groupId>org.apache.felix</groupId>
            <artifactId>org.apache.felix.ipojo.annotations</artifactId>
            <version>1.12.1</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.5.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <!-- BND Maven Plugin Configuration -->
            <plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-bundle-plugin</artifactId>
                <extensions>true</extensions>
                <configuration>
                    <instructions>
                        <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
                        <!--<Private-Package>$YOUR_PRIVATE_PACKAGE</Private-Package> <Export-Package>$YOUR_EXPORTED_PACKAGE</Export-Package> -->
                    </instructions>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-ipojo-plugin</artifactId>
                <version>1.12.1</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>ipojo-bundle</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

我正在使用Apache Felix作为OSGi运行时。我添加了fileinstall捆绑包并配置了它的路径。我在路径中添加了osgi-greeter捆绑包和一个名为com.example.my.Greeter.cfg的配置文件,如下所示:

greeting = Hello World

我打开了Felix的调试日志,可以看到fileinstall软件包已加载了其参数。但是,它什么也没做。我可以手动安装和启动该捆绑包,但是显然它仅向控制台输出null。目标是添加多个配置文件,并让fileinstall从其中启动实例。有什么想法可以实现这一目标,或者我可以做些什么来使文件安装以这种方式工作?

1 个答案:

答案 0 :(得分:0)

我设法解决了。基本上,我将多个配置文件添加到监视的文件安装文件夹中,名为:

  • com.example.my.Greeter-A.cfg
  • com.example.my.Greeter-B.cfg
  • com.example.my.Greeter-C.cfg

我认为在文件名中只需要在类名之后添加实例标识符即可。