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のビルド設定内で、上に示したプラグインのバージョンに不備があるため、それをエラーが起きないバージョンに固定して置き換えている。修正が終わったら、サンプルの実行手順を全てやり直す必要がある。正式リリースでは修正されることであろう。