/osgi-demo-bookstore

デブサミ2010でデモしたアプリケーションです。README.txtに手順を記載しています。

Primary LanguageJava

bookstoreデモアプリケーション

written by Hiroki Kondo

このアプリケーションでは、一般にMaven2のリポジトリで配布されていない、H2 databaseのJaQuというライブラリを使っています。
(と言っても、H2のソースから簡単にビルドできます。)
個人ではMaven2のリポジトリを運用していないため、JaQuをビルドしたライブラリをデモに同梱しています。
バージョンの不整合を防ぐため、H2 Databaseも併せて試す前にローカルにインストールしてください。

mvn install:install-file -Dfile=h2-1.2.128.jar -DgroupId=com.h2database -DartifactId=h2 -Dversion=1.2.128 -Dpackaging=jar
mvn install:install-file -Dfile=h2jaqu-1.2.128.jar -DgroupId=com.h2database -DartifactId=h2jaqu -Dversion=1.2.128 -Dpackaging=jar

== デモ実行のために必要なもの ==
 * Maven 2系
 * Pax Construct 1.4
http://wiki.ops4j.org/display/paxconstruct/Downloadからダウンロードしてください。

== 記号の意味 ==
# : コマンド入力
> : OSGiコンソール上の操作
e : ソース編集


1. Mock Bundleでの起動
# cd bookstore
# mvn install
... (各プロジェクトのビルドをします。)

# pax-provision
[OSGiランタイムが起動]
> ss (稼働中のBundleの状況が確認できます)
id	State       Bundle
...
34	ACTIVE      org.kompiro.bookstore.books.domain_1.0.0
35	ACTIVE      org.kompiro.bookstore.books_0.1.0
36	ACTIVE      org.kompiro.bookstore.web_0.1.0
37	ACTIVE      org.springframework.bundle.spring.webmvc_2.5.4
38	ACTIVE      org.kompiro.bookstore.web.admin_0.1.0
39	ACTIVE      org.kompiro.bookstore.books.mock_0.1.0.mock

という感じで表示されます。
Mockサービスとして動いていることを確認してください。

検索画面
http://localhost:8080/shop/search.htm

登録画面
http://localhost:8080/admin/register.htm

それぞれのページのHTMLソースを開くと、
途中に現在動作中のサービス名が表示されています。

2. Mock->implへ変更
# cd books.impl
# mvn install

installで指定できるJARのパスはURLです。今回はローカルのファイルのため、file://を接頭辞として指定します。Windowsの場合はfile://C:/...、LinuxやMacの場合は、file:///...(ルートからのパス)で指定してください。
> install file:///{bookstoreまでの絶対パス}/books2/target/books2-2.0.0.jar
> install file:///{bookstoreまでの絶対パス}/books.impl/target/books.impl-0.1.0.impl.jar
> install file:///{bookstoreまでの絶対パス}/h2-1.2.128.jar
> install file:///{bookstoreまでの絶対パス}/h2jaqu-1.2.128.jar

> stop org.kompiro.bookstore.books.mock
> uninstall org.kompiro.bookstore.books
> start org.kompiro.bookstore.books_2.0.0のID(左端の番号)
> start org.kompiro.bookstore.books.impl
> refresh
> ss
[Bundle IDを確認]

> update org.kompiro.bookstore.web
> update org.kompiro.bookstore.web.admin
(データが空の事を確認)
http://localhost:8080/shop/search.htmにアクセスし、検索してみましょう。
http://localhost:8080/admin/register.htmにアクセスし、登録してみましょう。
(Like検索していることを確認)

http://localhost:8080/shop/search.htmにアクセスし、Like検索してみましょう。
*残念ながら、日本語はLike検索できません。JaQuの振る舞いの確認ではないので既存の障害にしてください。

3. impl->Mockへ変更
> stop org.kompiro.bookstore.books.impl
> start org.kompiro.bookstore.books.mock
> update org.kompiro.bookstore.web
> upate org.kompiro.bookstore.web.admin

(データが元のMockのデータを参照していることを確認)

4. Mockとimplを同時実行(システムの中で同一系のサービスを起動)
e JaQuBookServiceを開き、BookService以外にBookService2を実装していることを確認
e src/main/webapp/WEB-INF/shop-osgi.xmlを開き、BookService→BookService2
# cd ../web
# mvn install
> start org.kompiro.bookstore.books.impl
> uninstall org.kompiro.bookstore.web
> install file://...(mvnでインストールしたパス)
> refresh
> start org.kompiro.bookstore.web
HTMLソースをみて、それぞれ違うサービスで動いていることを確認しましょう。

== OSGiコンソールコマンドの意味 ==
ss:現在稼働中のBundle状態を一覧表示
install url:urlで指定したBundleを新たにインストールします。
uninstall id or symbolic_name:指定したBundleをアンインストールします。
start id or symbolic_name:指定したBundleを活性化します。サービスのインストールもこの時に行われます。
stop id or symbolic_name:指定したBundleを非活性化します。サービスのアンインストールもこの時に行われます。
refresh:現在installされているBundleのうち、更新されたものを読み込み直します。
update id or symbolic_name:指定したBundleを更新します。