Mais conteúdo relacionado Mais de Hiroki Kondo (20) Spring Dynamic Modules2. 自己紹介させてください
• お仕事
– Eclipse RCPプログラマ
• EclipsePlugin開発勉強会(GoogleGroup)
• OSGiについて書かせていただきました。
– 「今日のいいのかこんな記事」として取り上げられ
ました。
• http://www.javainthebox.net/blog/2007/08/blog-
post_05.html
• OSGiがJDKに入るかどうかを問題視 3. Spring Dynamic Modulesって?
• 以前はSpring-OSGi
– プロジェクト名はOSGi Allianceからの承認待ち
• 導入したときのうれしさ
– 動的にApplicationContextの保持するBeanを入
れ替えられる
– JARの依存性地獄から抜けられます 5. ざんねんなおしらせ
• Spring Dynamic Modules は2.5リリースに
は含まれてません(現在RC1リリース)
• 動作は非常に良好と言いたかったんですが、
うまく行きませんでした。Orz
• 環境の問題だと思われます。
• それでもデモしていいですか? 6. OSGiってなに?
• Open Service Gateway Initiativeの略
– 家電などの機器間でサービスを提供するための
インターフェース仕様を規定
• 現在R4.1が公開されています
• 仕様なので、実装はいくつかあります
– 一部ではJava Operating Systemだと言う声も 7. OSGiってどこで使われてる?
• Eclipse Platform
• 携帯電話/PDA(Nokia)
• APサーバーでも
– Websphere
– JBoss(JBoss-OSGi)
• 拡張性の高さ・容易さが求められる場面で使われて
います。
• ×Android – OSGiの動作報告アリ
• △ JDKに導入 – モジュール管理システムとして
→Sunはどうしても自作 8. OSGiのうれしさ
• VMを停止せずに機能追加・削除・更新ができる
– 実行中にサービスを入れ替えられる
• 依存するライブラリを極力衝突させない仕組み
– 実装に依存しないクラスのロード
• インストールされているコンポーネントで実行時に間に合わせる
– モジュールごとにクラスローダーの境界を設定できる
• Public classでも他のコンポーネントからのロードを制限
– ロードするライブラリのマルチバージョンサポート
• 同一パッケージで違うバージョンのロードを可能に
OSGiではBundleという単位でモジュールを扱います 9. コンソール上で機能追加
State (active)
• install State (RESOLVE)
– Bundleをインストール System Bundle
bundle M
• start
– Bundleを活性化
Bundle
• stop D-v2
X
– Bundleを停止
• uninstall Bundle
B
– Bundleを削除 Bundle
Bundle
A
C
OSGiによるBundleの連携 13. Spring Dynamic Modulesのうれしさ
• OSGi環境に導入すると、
ApplicationContextをサービスとして提供
– Springの持つAOP/Transaction等の機能を提供
• モジュールの状態によって自動的にBeanを
登録・削除する
• XML設定でOSGiのお約束をSpring流に 14. SpringDynamicModulesを使うと?
Bean
State (active)
• install State (RESOLVE)
– Bundleをインストール System Bundle
bundle M
• start
– Bundleを活性化
Bundle
Spring
• stop extender
X
– Bundleを停止
• uninstall Bundle
B
– Bundleを削除 Bundle
Bundle
A
C
Spring Dynamic Modules 導入後のOSGi 15. Spring Dynamic Modules
• サポートしているプラットフォーム
– 仕様上R4.0以降のプラットフォーム
– テストしているプラットフォーム
• Eclipse Equinox
• Apache Felix
• Knopflerfish
• どんな感じに設定するか見てみます 16. Spring Dynamic Modulesを使うには
Bundle編
• Bundleに下記の設定を追加
– OSGi Framework上のApplicationContextに追加
•META-INF/MANIFEST.MFに下記を追記する
Spring-Context: filepath
タイムアウトなどの細かい設定が可能
•META-INF/spring/というフォルダを作成し、その
下にxmlを配置する 21. ライセンスについて
• JSUGマスコットアイコン(本スライド左下)が残されている場合に限り、本作品(またそれを
元にした派生作品)の複製・頒布・表示・上演を認めます。
• 非商用目的に限り、本作品(またそれを元にした派生作品)の複製・頒布・表示・上演を認
めます。
• 本作品のライセンスを遵守する限り、派生作品を頒布することを許可します。 22. Appendix A. Spring Dynamic Modules
を使うには(環境構築編 1)
• 用意するもの
– Eclipse 3.3.1.1 for Plugin/RCP Developper
– spring-osgi-1.0-rc1-with-dependencies
– 本日のサンプルワークスペース
• spring-osgi-workspace.zipとしてJSUGの
GoogleGroupに公開予定 23. Appendix A. Spring Dynamic Modules
を使うには(環境構築編 2)
1. 次の構造でフォルダを作成
2. spring-osgi-extensions/eclipse/pluginsの下に
SpringDynamicModules/のdist、lib以下のものを
コピーする
3. Eclipseを起動し、Window->Prefrencesを開く
4. Plug-in Development -> Target Platformを選ぶ 24. Appendix A. Spring Dynamic Modules
を使うには(環境構築編 3)
5. Locationにspring-osgi-extensions/eclipseを指
定 -> Reload ->画面のようにチェックを外しOK 25. Appendix A. Spring Dynamic Modules
を使うには(環境構築編 4)
6. 本日のサンプルワークスペースを現在の
ワークスペースとしてスイッチする
7. Open Run Dialog
8. 左記を選んで起動 26. Appendix B. 文献
• Spring Dynamic Modules Document
– http://static.springframework.org/osgi/docs/current/ref
erence/html/
– 設定方法が一通りかかれています
• OSGi Tutorial
– http://www.aqute.biz/OSGi/Tutorial
– OSGiの使い方が一通りかかれています
• 先取りJava7(自著)
– http://www.thinkit.co.jp/free/article/0708/9/2/
– OSGiについて書いた記事です。