我已经开始为 apache felix 开发一个包,并使用 ops4j pax 插件进行了开发。
我已经创建了项目结构,pax-create-project
并在其中做了正常的pax-create-bundle
. 然后,您将获得使用 maven 构建整个事物的初始项目结构。这里重要的部分是,你的包有它自己的 pom( bundlename/pom.xml
) 和 bnd 文件( bundlename/osgi.bnd
),但是配置maven-bundle-plugin
已经在poms/compiled/pom.xml
. 捆绑元数据配置在下,poms/compiled/pom.xml
但标准激活器配置在上述osgi.bnd
文件下。bnd 文件中的默认值为Bundle-Activator: ${bundle.namespace}.internal.ExampleActivator
.
现在我想开始使用注释,org.apache.felix.scr
所以我将它包含在依赖项下的捆绑包自己的 pom 中:
<dependency>
<groupId>org.apache.felix</groupId>
<artifactId>org.apache.felix.scr</artifactId>
<version>1.6.0</version>
</dependency>
我为服务创建了我的界面:
package namespace;
public interface Sample {
void sayHello();
}
以及带有以下注释的实现org.apache.felix.scr
:
package namespace.internal;
import org.apache.felix.scr.annotations.Activate;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Deactivate;
import namespace.Sample;
@Component
@Service
public class SampleImpl implements Sample{
@Activate
void start(){
System.out.println("Started SampleImpl.");
}
@Deactivate
void stop(){
System.out.println("Stopped SampleImpl.");
}
@Override
public void sayHello() {
System.out.println("Hello!");
}
}
osgi.bnd
为了启动组件,我需要在文件中放置什么?我不得不删除上面提到的默认条目,因为我不再使用 BundleActivator。
现在问题来了:我需要对上述任何文件做什么才能mvn clean install pax:provision
启动一个 felix 环境来启动我的包并让我看到任何打印输出?我已经查看了我正在启动的 Apache 日志服务的日志输出,它只是告诉我:
2012.09.28 16:52:44 INFO - Bundle: namespace - BundleEvent STARTED
2012.09.28 16:52:44 INFO - Bundle: namespace - BundleEvent RESOLVED
任何提示都非常感谢。或者链接,我已经搜索了几个小时来找到一个完整的指南来使用 scr 和捆绑的 maven 插件。
问候,谢尔斯基