Apache FelixはOSGi R4 Service Platformの実装です.
まぁ端的に言えばプラグイン(Plugin)型(OSGiではバンドル(Bundle)と呼ぶ)のアプリケーションを作る上での土台みたいなモノです.
で,そのやり方をちょこっと書いてみます.
0.材料
ここからdownload. (Felix 1.0.3)
必要なのはfelix-1.0.3/bin/felix.jar
1.Eclipse Projectでやってみる.
ここではJava Project.
'FelixApplicatin'という名前.
'.class'ファイルの場所を分けるため,'project layout'の設定でsrc/binをもうける方にする.(趣味?)
でとりあえず作成しちゃう.
2.外部jarの設定
プロジェクト名上で右クリックにてコンテクストメニューを出す.
'Build Path / Add External Archive...' にてfelix.jarを追加.
3.Main classを作る.
起動用のMain class( example.Main )をsrcの下に作る.
で,コードはこんな感じ.
src/example/Main.javapackage example;
import java.util.Map;
import java.util.List;
import java.util.ArrayList;
import org.osgi.framework.Constants;
import org.apache.felix.framework.Felix;
import org.apache.felix.framework.cache.BundleCache;
import org.apache.felix.framework.util.StringMap;
import org.apache.felix.main.AutoActivator;
public class Main {
private static Felix felix = null;
private static String join(List list, String d) {
if (list.isEmpty()) {
return "";
}
StringBuffer ret = new StringBuffer((String) list.get(0));
for (int i = 1; i < list.size(); i++) {
ret.append(d);
ret.append((String) list.get(i));
}
return ret.toString();
}
private static String getString_SystemPackages() {
List list = new ArrayList();
list.add("org.osgi.framework; version=1.3.0");
list.add("org.osgi.service.packageadmin; version=1.2.0");
list.add("org.osgi.service.startlevel; version=1.0.0");
list.add("org.osgi.service.url; version=1.0.0");
return join(list, ",");
}
public static String PLUGINS_LOCATION = "file:/path/to/plugins/"; // http:でもいいよ
private static String getString_AutoStartProp() {
List list = new ArrayList();
list.add(PLUGINS_LOCATION + "tutorial.example1_1.0.0.jar");
return join(list, " ");
}
public static void main(String[] argv) throws Exception {
Map configMap = new StringMap(false);
configMap.put(Constants.FRAMEWORK_SYSTEMPACKAGES,
getString_SystemPackages());
configMap.put(AutoActivator.AUTO_START_PROP + ".1",
getString_AutoStartProp());
configMap.put(BundleCache.CACHE_PROFILE_DIR_PROP, "cache");
List activators = new ArrayList();
activators.add(new AutoActivator(configMap));
felix = new Felix(configMap, activators);
try {
felix.start();
} catch (Exception ex) {
System.err.println("Could not create framework: " + ex);
ex.printStackTrace();
System.exit(-1);
}
}
}
4.で,このMainを起動.
なんだけど上の例ではtutorial.example1_1.0.0.jarというjarをpluginとして読み込んでる.
こいつは"Apache Felix Tutorial Example 1"で作り方が書かれているサンプルPlugin.
で,これについてはまた今度.
ここまでのプロジェクトツリーはこんな感じ.
#'cache'は実行すると作られる.
#コードの'(1)'で定義している名前となる.
参考: ありがとうございました.
Apache Felix - Launching and Embedding Apache Felix
Gridshore » Blog Archive » Starting with OSGi using apache felix (step 1)
0 件のコメント:
コメントを投稿