我正在尝试部署一个带有属性的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>
我使用ApacheFelix作为OSGi运行时。我添加了fileinstall捆绑包并配置了它的路径。在路径中,我添加了osgi迎宾包和一个名为com.example.my.greeter.cfg的配置文件,如下所示:
greeting = Hello World
我打开了Felix的调试日志,可以看到fileinstall捆绑包加载了它的参数。然而,它什么也没做。我可以手动安装和启动捆绑包,但它显然只向控制台输出null。目标是添加多个配置文件,并让fileinstall从中启动实例。有什么想法可以实现这一点,或者我能做些什么让fileinstall以这种方式工作吗?
我设法修复了它。基本上,我将多个配置文件添加到了名为的监视文件安装文件夹中
- com.example.my.Greeter-A.cfg
- com.example.my.Greeter-B.cfg
- com.example.my.Greeter-C.cfg
我认为在文件名中只需要类名之后的实例标识符就可以使其工作。