Axis2によるWebサービス

更新日 2007/11/25


1. はじめに

 以前から、Axisには興味がありましたが、知らないうちにAxis2になっていました。Axis2は、Amazon.comなどで用いられいてるREST形式のWebサービスを提供しており、Ver1.3からはPOJOのアノテーションによるWebサービス化を実現しているということで、Webサービスの敷居が少し低くなる思いがしています。

2. 準備
3.
4.
2. 準備 ↑top

まずは、環境を揃えるとしましょう。ここでは、Fedora上のTOMCATを用いて、Axis2を動かすこととします。

# cd /usr/local/src  ←ダウンロード先はどこでもよいです。
# wget http://ftp.riken.jp/net/apache/ws/axis2/1_3/axis2-1.3-war.zip
# unzip axis2-1.3-war.zip
# cd /usr/local/tomcat/webapps
# cp /usr/local/src/axis2.war .

この状態で、TOMCATを再起動すると、以下でアクセス可能となります。
http://(サーバIPアドレス):8080/axis2/

私の環境では、ApacheとTOMCATを連携して 8080ポートをふさいでいたため、/etc/httpd/conf.d/proxy_ajp.confに、/axis2/の設定を追加して、http://(サーバIPアドレス)/axis2/にアクセスしたところ、Axisの画面が表示されるようになりました。

Axis2では最初からVersionというWebサービスのみがデプロイされており、これにアクセスするためには、WSDLを利用してクライアントプログラムを書かないといけませんが、Axis2ではREST形式のWebサービスも同時に提供しているということで、ブラウザから以下でアクセスできます。
http://(サーバIPアドレス):8080/axis2/services/Version/getVersion

結果を以下に示す。
- <ns:getVersionResponse xmlns:ns="http://axisversion.sample">
<ns:return>Hello I am Axis2 version service , My version is 1.3</ns:return>
</ns:getVersionResponse>

もちろん、WSDLから正規にWebサービスにアクセスしてもよい。
WSDLは以下で取得できる。
http://(サーバIPアドレス):8080/axis2/services/Version?wsdl

3. POJOにアノテーション  ↑top

 POJOのアノテーションを加えることで、Webサービス化できるということで、実験してみます。

@まず、/usr/local/tomcat/webapps/axis2/WEB-INF配下に、pojoディレクトリを作る。
Apojoディレクトリ配下にsrcディレクトリを作成し、その中にテストプログラム AnnoTestService.java を作成する。

ソースプログラム  AnnoTestService.java
// AnnoTestService.java
import javax.jws.WebService;
import javax.jws.WebMethod;

@WebService
public class AnnoTestService {

 @WebMethod
 public String sayHello(String yourName) {
  return "Hello, " + yourName + ".";
 }
}

B以下でコンパイルする。javacはVer1.5でないと怒られます。
javac -classpath .:/usr/local/tomcat/webapps/axis2/WEB-INF/lib/axis2-jws-api-1.3.jar -d .. *.java
これにより、pojo配下にクラスが生成される。

CTOMCATを再起動する。

これで終わり。

ブラウザからサービス一覧を参照すると
AnnoTestServiceService.AnnoTestServicePort
というサービスが見え、WSDLも参照できた。

このサービスは、RESTでアクセスできるそうで、ブラウザから以下を実行してみた。
http://localhost:8080/axis2/services/AnnoTestServiceService.AnnoTestServicePort/sayHello?yourName=egami

このときの応答は以下になるはずなのだが、Hello, null.になってしまう。なぜでしょう。。
<ns:sayHelloResponse>
<ns:return>Hello, egami.</ns:return>
</ns:sayHelloResponse>
 

4.   ↑top
 



[HOME] / [Perl] / [Oracle8] / [Palm(GCC)] / [Palm(CodeWarrior)] / [EJB] / [本の紹介]

このページにご意見のある方は、egami@ee.em-net.ne.jp までお願い致します。