2009年11月30日月曜日

Tuscany SCA 1.5/m2eclipse

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から出発した方がいいような気がしないでもない。

0 件のコメント:

コメントを投稿