私は 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 Log Serviceのログ出力をすでに見ましたが、次のように表示されます。
2012.09.28 16:52:44 INFO - Bundle: namespace - BundleEvent STARTED
2012.09.28 16:52:44 INFO - Bundle: namespace - BundleEvent RESOLVED
どんなヒントでも大歓迎です。またはリンク、私は何時間も検索して、scr とバンドルに maven プラグインを使用するための完全なガイドを見つけました。
こんにちは、シェルスキー