2017-03-08 10 views
0

OSGiバンドルはMANIFEST-MFファイル内のバンドルアクチベータなしでどのようにアクティブになりますか?たとえば、Google guavaはバンドルとして動作し、Karafコンテナでアクティブになりますが、MANIFEST-MFファイルにはBundle-Activatorプロパティは含まれません。OSGiバンドルはバンドルアクティベータなしでどのように開始されますか

Manifest-Version: 1.0 
Bnd-LastModified: 1408992499326 
Build-Jdk: 1.7.0-google-v6 
Built-By: cgdecker 
Bundle-Description: Guava is a suite of core and expanded libraries that 
    include utility classes, google's collections, io classes, and much 
    much more. Guava has only one code dependency - javax.annotation 
, per the JSR-305 spec. 
Bundle-DocURL: https://guava-libraries.googlecode.com/ 
Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt 
Bundle-ManifestVersion: 2 
Bundle-Name: Guava: Google Core Libraries for Java 
Bundle-SymbolicName: com.google.guava 
Bundle-Version: 18.0.0 
Created-By: Apache Maven Bundle Plugin 
Export-Package: com.google.common.net;uses:="javax.annotation,com.google 
.common.base,com.google.common.hash,com.google.common.io,com.google.com 
mon.primitives,com.google.common.collect,com.google.common.escape";vers 
ion="18.0.0",com.google.common.html;uses:="com.google.common.escape,jav 
ax.annotation";version="18.0.0",com.google.common.collect;uses:="com.go 
ogle.common.base,javax.annotation,com.google.common.primitives,com.goog 
le.common.math";version="18.0.0",com.google.common.primitives;uses:="co 
m.google.common.base,javax.annotation,sun.misc";version="18.0.0",com.go 
ogle.common.base;uses:="javax.annotation";version="18.0.0",com.google.c 
ommon.escape;uses:="com.google.common.base,javax.annotation";version="1 
8.0.0",com.google.common.cache;uses:="com.google.common.collect,com.goo 
gle.common.util.concurrent,javax.annotation,com.google.common.base,com. 
google.common.primitives,sun.misc";version="18.0.0",com.google.common.e 
ventbus;uses:="com.google.common.collect,com.google.common.cache,javax. 
annotation,com.google.common.base,com.google.common.util.concurrent,com 
.google.common.reflect";version="18.0.0",com.google.common.util.concurr 
ent;uses:="com.google.common.base,javax.annotation,com.google.common.co 
llect,com.google.common.primitives,com.google.common.math";version="18. 
0.0",com.google.common.hash;uses:="com.google.common.primitives,com.goo 
gle.common.base,javax.annotation,com.google.common.math";version="18.0. 
0",com.google.common.io;uses:="javax.annotation,com.google.common.base, 
com.google.common.math,com.google.common.hash,com.google.common.collect 
,com.google.common.primitives";version="18.0.0",com.google.common.xml;u 
ses:="com.google.common.escape,javax.annotation";version="18.0.0",com.g 
oogle.common.reflect;uses:="javax.annotation,com.google.common.base,com 
.google.common.collect,com.google.common.primitives";version="18.0.0",c 
om.google.common.math;uses:="com.google.common.base,com.google.common.p 
rimitives,javax.annotation";version="18.0.0",com.google.common.annotati 
ons;version="18.0.0" 
Import-Package: javax.annotation;resolution:=optional,sun.misc;resolutio 
n:=optional 
Tool: Bnd-1.50.0 

答えて

1

たとえば、BlueprintやDeclarative Servicesなど、バンドル内でロジックを開始する方法があります。しかし、私はグアバがそれを持っているとは思わない、 ここで見ているものは典型的なケースです。

A)これは、すべてのためのものである

Fを停止アクティブC)出発
D)
E))

アンインストールを解決)
Bをインストール

: アンOSGiバンドルは、通常、以下の手順に従いますフラグメントバンドル自体は開始/アクティブ化できないため、フラグメントのみが解決された状態にとどまります。

バンドル(またはこの場合はグアバ)にアクティブステージで呼び出される明示的なアクティベータクラスがない場合、バンドルは引き続きアクティブになります。

+0

はい。私はバンドルがアクティブになると、どのクラスもインスタンス化する必要はないと思います。しかし、バンドルに明示的なActivatorクラスがある場合、このクラスはアクティブなステージでインスタンス化されます。 –

関連する問題