OSGi Applications(Open Alpha) for WAS7.0

3,295 views

Published on

You can deploy your applications as OSGi budles to WebSphere Application Server using OSGi Application add-on.

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,295
On SlideShare
0
From Embeds
0
Number of Embeds
226
Actions
Shares
0
Downloads
0
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

OSGi Applications(Open Alpha) for WAS7.0

  1. 1. WebSphere Application ServerのOSGi対応について<br />2009/12/23@OSGi勉強会<br />日本IBM 須江 信洋<br />※この資料は2009/12/22時点での公開情報に基づいて記載されています。<br />また、資料の内容は個人としての見解を述べたものであり、<br />所属する企業・組織が内容を保証するものではありません。<br />
  2. 2. 自己紹介<br />氏名: 須江 信洋(すえ のぶひろ)<br />所属: 日本IBM ソフトウェア事業WebSphereテクニカル・セールス<br />しごと: WebSphereを売る<br />お世話になっているコミュニティ<br />JJUG, JGGUG, JSUG<br />その他<br />http://twitter.com/nobusue<br />ガジェット好きです(Kindle買いました)<br />
  3. 3. お品書き<br />Java EE屋がOSGiに注目すべき理由<br />主要APサーバーのOSGi化<br />Javaのクラスローダーの限界<br />WebSphereのOSGi対応 最新状況<br />WAS7.0: OSGi Open Alpha<br />導入手順<br />何が変わるの?<br />Blueprint ServiceとApache Aries<br />
  4. 4. 主要APサーバーのOSGi対応状況<br />WebSphere<br />v6.1から内部はOSGiベース<br />WebLogic<br />v10.3から内部はOSGiベース<br />Glassfish<br />v3からOSGiベース<br />JBoss<br />JBossOSGi 1.0.0Beta5 (2009/12/09)<br />SpringSourcedm Server<br />先進的<br />OSGi対応が<br />基本<br />
  5. 5. Javaのクラスパスの課題<br />実行環境におけるクラスの依存関係は、実行してみないと分らない<br />コンパイル時にはクラスの依存関係が満たされていても、実行時にそれを担保するための仕組みがない<br />依存性解決がフラットである<br />モジュール分割していても、クラスパスの定義は分割できない⇒階層型クラスローダーである程度解決?<br />よくある問題<br />あるJARが必要とするJARは、実行してみないと判別できない<br />必要なJARを試行錯誤(いわゆるJAR hell)<br />
  6. 6. 階層型クラスローダーの課題<br />同一クラスローダー内ではクラスがユニークでなければならない<br />従来のAPサーバーでは、WAR/EAR/Globalなどのレベルでクラスローダーを階層化<br />クラスローダーを分ければ、同じクラスの異なるバージョンの共存が可能だが・・<br />よくある問題<br />ロギング/XMLパーサー/バイトコード操作ライブラリなどのバッティング<br />
  7. 7. そこでOSGiですよ<br />依存モジュールの明確化<br />実行時の依存性解決を担保<br />実行前の事前検証が可能<br />ネットワーク型の依存性解決<br />モジュールに閉じたクラスパスの管理<br />モジュールのバージョニング<br />モジュールを組み合わせる際の、依存モジュールのバッティングを回避<br />
  8. 8. WebSphere Application Server V7 OSGi Applications<br />WAS V6.1では、コンテナ側はOSGi化されていたが、ユーザーアプリケーションは従来の階層型だった<br />WAS V7にOSGi Applicationsを適用することで、ユーザーアプリケーションもOSGiバンドルとしてデプロイ可能に<br />
  9. 9. WAS V7 OSGi Applications<br />現在、Open Alpha公開中<br />https://www14.software.ibm.com/iwm/web/cc/earlyprograms/websphere/iwsasosgia/<br />OSGi 4.2 Blueprint component model対応<br />internal / external bundle repository対応<br />JNDIとOSGi service registryの統合<br />Open Alpha動作環境<br />WAS V7.0 FixPack5<br />Windows / RHEL / SLES (x86)<br />
  10. 10. 提供されるもの<br />Open Alphaバイナリ(2009/11/20 ver)<br />WAS v7用アドオン<br />サンプルアプリケーション(2種)<br />リリースノート<br />Getting Started<br />Open Alpha ドキュメンテーション<br />48ページのかなり詳細なドキュメント<br />
  11. 11. 導入手順<br />インストール<br />OSGi-Applications-Open-Alpha.20091120.zipを&lt;WAS_HOME&gt;直下に展開<br />&lt;WAS_HOME&gt;/feature_packs/aries/bin/complete_installation.[bat|sh]<br />プロファイル拡張<br />指定したWASプロファイルのOSGi Apps機能を有効にする<br />&lt;WAS_HOME&gt;/feature_packs/aries/bin/augumentProfile.[bat|sh] &lt;profile名&gt;<br />
  12. 12. 管理コンソールの拡張<br />プロファイルを拡張すると、以下の機能がコンソールに追加される<br />OSGibundleのデプロイとバージョン管理<br />OSGibundle repository<br />の構成<br />
  13. 13. OSGi Appsのデプロイメント・モデル<br />OSGi Bundle(.jar)<br />OSGimetadata<br />OSGi Bundle(.jar)<br />OSGi Bundle(.jar)<br />Enterprise<br />Bundle App<br />(.eba)<br />Web App Bundle(.war)<br />BusinessLevelApplication<br />ContextPath<br />Enterprise<br />Bundle App(.eba)<br />VirtualHost<br />Enterprise<br />Bundle App(.eba)<br />
  14. 14. (参考)従来のデプロイメント・モデル<br />EJB / SharedLib(.jar)<br />OSGi Bundle(.jar)<br />OSGi Bundle(.jar)<br />Enterprise<br />App<br />(.ear)<br />Web App (.war)<br />BusinessLevelApplication<br />ContextPath<br />Enterprise<br />App (.ear)<br />VirtualHost<br />Enterprise<br />App (.ear)<br />
  15. 15. Blueprint component model<br />あるBundleが提供するサービスを、Client(他のBundle)から動的に参照<br />[OSGI-INF/blueprint/xxx.xml]<br />&lt;blueprint <br />xmlns:tx=&quot;http://www.ibm.com/appserver/schemas/8.0/blueprint/transactions&quot;<br />xmlns:jpa=&quot;http://www.ibm.com/xmlns/ibm-blueprint-jpa/v1.0.0&quot;&gt;<br />&lt;bean id=&quot;blabberImpl&quot; class=&quot;com.ibm.ws.eba.example.blabber.persistence.BlabberImpl&quot;&gt;<br />&lt;jpa:context property=&quot;entityManager&quot; unitname=&quot;blabber&quot; /&gt;<br /> &lt;tx:transaction method=&quot;*&quot; value=&quot;Required&quot;/&gt;<br />&lt;/bean&gt;<br />&lt;service id=&quot;blabberService&quot; ref=&quot;blabberImpl&quot; interface=&quot;com.ibm.ws.eba.example.blabber.persistence.spi.BlabberUserInterface&quot; /&gt;<br />&lt;/blueprint&gt;<br />OSGi Bundle(.jar)<br />InitialContextic = new InitialContext();<br /> return (BlabberUserInterface) ic.lookup(&quot;aries:services/&quot; + BlabberUserInterface.class.getName());<br />Client<br />
  16. 16. Apache Aries<br />現在、incubatorに提案中<br />http://wiki.apache.org/incubator/AriesProposal<br />WAS V7 OSGi Appsのベース<br />OSGiベースのエンタープライズ・アプリケーションにおけるコンポーネント・フレームワークを目指す<br />OSGi Alliance Enterprise Expert Group(EEG)によって定められた仕様の実装<br />複数Bundleで構成されるアプリケーションのアセンブリ・フォーマット<br />JavaEEコンテナ・サービスとの統合など<br />
  17. 17. まとめ<br />次世代JavaEEでは、OSGi必修になりそう<br />Neilさんのセッションで勉強!!<br />WAS V7のOSGiApplicationsぜひ試してみて下さい(そしてフィードバックを・・・)<br />Apache Ariesはどうよ?<br />今のところ、IBM/SAP/Progress?<br />

×