Tuscanyを試す
Tuscanyは、Apache License Version 2.0に準拠したオープンソースプロダクトで、開発プロジェクトはApacheソフトウェアファウンデーションのIncubatorプロジェクトに置かれている。Tuscanyの現在のバージョンは1.0 M2であり、SCA バージョン1.0仕様を満たすべく、現在活発な開発が行われている。
これより先は、Tuscanyを使って実際にSCAアプリケーションを動かしながら理解を深めることとしたい。まだ正式リリースされていないプロダクトなので、様々な不具合がある。また、後に出る正式リリース版と利用法が異なる部分もあるかもしれないが、この点はご容赦いただきたい。
Tuscanyサンプルのダウンロード
Tuscanyの実行環境、ソース、サンプルは全て以下のTuscanyのWebサイトからダウンロードできる。
ここでは、サンプルをアーカイブしたものとしてtuscany-sca-1.0-incubator-M2-samples.zip(Windows版。Linux版は拡張子tar.gz)をダウンロードする。また、サンプルを動作させるに当たって実行環境のバイナリ(bin.zipまたはbin.tar.gz)をダウンロードする必要はない(サンプルの実行手順中に自動でダウンロードが行われる)が、ダウンロードしておいても問題はない。
空のディレクトリを作成した後、ダウンロードしたアーカイブを展開することにより多数のサンプルが手に入る。
Tuscanyサンプルの実行
まず、サンプルの実行には以下の環境が必要だ。
- Java SE 5 (注意! 現在のTuscanyはJava SE 6では動かない)
- Maven 2.0.4
以下、上記の環境が使える状態であることを前提に話を進める。
まず、解凍したディレクトリ上で以下のコマンドを実行する。
> mvn -N install
これにより、全サンプルのビルド準備が整う。
後は、各サンプル配下のreadme.htmlに従って進めればサンプルの実行が可能になる。本稿では、最も基本的なcalculator(計算機)サンプルを実行してみよう。
コマンドプロンプトで「<サンプルルート>/standalone/calculator」に移動し、以下のコマンドを実行してサンプルのビルドを行う(サンプルのビルドでエラーが発生する場合は、後述の対処を行ってほしい)。
> mvn
上のコマンドによりビルドが成功すると、target/sample-calculator.jarが作成される。 次に、以下のコマンドを発行する。
> mvn dependency:unpack
これにより、Tuscanyのバイナリ実行環境が自動でダウンロードされ、target/distribution以下に展開される。
後は以下のコマンドを入力すれば、サンプルを実行することができる。
> java -jar target\distribution\bin\launcher.jar target\sample-calculator.jar
実行結果は以下のようになるはずだ。
3 + 2=5.0
3 - 2=1.0
3 * 2=6.0
3 / 2=1.5
なお、サンプルのビルドでは、以下のようなMaven2のエラーが出てしまう場合がある。
Reason: Error getting POM for 'org.apache.maven.plugins:maven-surefire-plugin' from the repository:
これは、Tuscanyの依存関係が満たされていないことによって発生するエラーだ。このエラーが出てしまった場合、「<サンプルルート>/standalone/pom.xml」を修正する必要がある。それには、XML要素project/build/plugins以下に、次のコードを挿入する。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.1</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.3</version>
</plugin>
この修正では、Tuscanyのビルド設定内で、上に示したプラグインのバージョンに不備があるため、それをエラーが起きないバージョンに固定して置き換えている。修正が終わったら、サンプルの実行手順を全てやり直す必要がある。正式リリースでは修正されることであろう。