Tuscany SCA に関する↓の連載のコードを動かしてみた。 『オープンソースApache Tuscanyで楽しむSOA』
現在、連載5回目で、ソースコードもダウンロードできる。記事のとおりに一通り動かしてみてから、使用ライブラリを User Library から Maven管理に変えてみた。やっぱり本番のプロジェクトで使う場面を考えると、Maven との連携を試してみたい。
tuscany-sca-all を指定するだけで、必要なものは芋づる式に Maven が集めてくれることを期待していたけど、そう簡単にはいかない。わかりにくい実行時例外が出て、なかなか Jetty が立ち上がるところまで行かず、デバッガを動かしながら必要な Jar を推理して集める破目になってしまった。意外と個別に設定するものが多い。
以下、<repositories>と<dependencies>。これだけあれば、とりあえず記事のサンプルは動く。
<repositories> <repository> <id>apache-incubating2</id> <name>Apache Incubating Repository</name> <url>http://dist.wso2.org/maven2/</url> </repository> </repositories> <dependencies> <dependency> <groupId>org.apache.tuscany.sca</groupId> <artifactId>tuscany-sca-all</artifactId> <version>1.5.1</version> </dependency> <dependency> <groupId>org.apache.neethi</groupId> <artifactId>neethi</artifactId> <version>2.0.4</version> </dependency> <dependency> <groupId>javax.annotation</groupId> <artifactId>jsr250-api</artifactId> <version>1.0</version> </dependency> <dependency> <groupId>org.apache.xmlbeans</groupId> <artifactId>xmlbeans</artifactId> <version>2.4.0</version> </dependency> <dependency> <groupId>com.metaparadigm</groupId> <artifactId>json-rpc</artifactId> <version>1.0</version> </dependency> <dependency> <groupId>net.sf.saxon</groupId> <artifactId>saxon-dom</artifactId> <version>8.7</version> </dependency> <dependency> <groupId>org.codehaus.jettison</groupId> <artifactId>jettison</artifactId> <version>1.0.1</version> </dependency> <dependency> <groupId>cglib</groupId> <artifactId>cglib</artifactId> <version>2.2</version> </dependency> <dependency> <groupId>org.apache.tuscany.sdo</groupId> <artifactId>tuscany-sdo-impl</artifactId> <version>1.1.1</version> </dependency> <dependency> <groupId>org.mortbay.jetty</groupId> <artifactId>jetty</artifactId> <version>6.1.17</version> </dependency> <dependency> <groupId>commons-httpclient</groupId> <artifactId>commons-httpclient</artifactId> <version>3.0.1</version> </dependency> <dependency> <groupId>org.apache.abdera</groupId> <artifactId>abdera-parser</artifactId> <version>0.4.0-incubating</version> </dependency> <dependency> <groupId>org.apache.ws.commons.schema</groupId> <artifactId>XmlSchema</artifactId> <version>1.4.4</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.15</version> </dependency> <dependency> <groupId>org.apache.axis2</groupId> <artifactId>axis2-kernel</artifactId> <version>1.4.1</version> <scope>runtime</scope> </dependency> </dependencies>
上記の追加で、記事どおりの動作を確認できた。第5回分まで実装すると、Web サービスが立ち上がり、ブラウザで http://localhost:8080/CalcCharge?wsdl
を叩けば、WSDL が観察できるようになる。あまりWeb サービスっぽい作業はしていないので、ちょっと面白い。
あと、Tuscany 2.0への移植もやってみたかったけど、Tuscany 1.5を用いたこの記事中のコードで、サービスを起動するために使われている SCADomain というクラスが、Tuscany 2.0では見当たらず、現時点での自分の知識では代替案がわからずに断念した。いずれ機を改めて挑戦したい。
また、maven archetype を使ってみたかったけど、これも Tuscany 2.0 用しか見当たらなかった。うーん、今から勉強を始めるなら、Tuscany 2.0から出発した方がいいような気がしないでもない。