連載
» 2002年09月05日 00時00分 公開

SOAPの3つの機能パソコンで試してわかるWebサービス(2)(5/6 ページ)

[イチロー,樋口研究室監修]

SOAPは通信手順

 SOAPは、「Simple Object Access Protocol」の略です。すなわち、「シンプルなオブジェクトアクセスのプロトコル」ということになります。このサンプルの例では、「MyService」がオブジェクトに当たります。そして、「Client」がSOAPをしゃべることでMyServiceにアクセスします。

 では、MyServiceはSOAPをしゃべることができるのでしょうか?

 ここで、MyServiceクラスのソースコード(MyService.java)を確認してみましょう。ソースコードは以下のディレクトリにあります。

<AXIS_HOME>\samples\userguide\example3 
package samples.userguide.example3;
  public class MyService {
    public String serviceMethod(String arg) {
    return arg;
  }
}  
●MyService.java

 これを見ると分かりますが、単なるJavaクラスであり、Javaの標準API以外は利用していません。すなわち、このMyServiceクラスはそのままではSOAPをしゃべることができません。

 これでもうお分かりだと思いますが、サーバ側でSOAPをしゃべっているのはAxisServletです。AxisServletはSOAPをしゃべり、クライアントからの要求に応じてサービスを動かす役目を持っています。まさにAxisServletはSOAPによるサービスを提供するサーバプログラムです。

 一方、同じディレクトリにあるClientプログラムも見てみましょう。

package samples.userguide.example3;
 
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
import org.apache.axis.utils.Options;
 
import javax.xml.namespace.QName;
 
import javax.xml.rpc.ParameterMode;
 
public class Client {
 public static void main(String [] args) {
  try {
   Options options = new Options(args);
   
   String endpointURL = options.getURL();
   String textToSend;
   
   args = options.getRemainingArgs();
   if ((args == null) || (args.length < 1)) {
    textToSend = "<nothing>";
   } else {
    textToSend = args[0];
   }
   
   Service service = new Service();
   Call  call = (Call) service.createCall();
 
   call.setTargetEndpointAddress( new java.net.URL(endpointURL) );
   call.setOperationName( new QName("MyService", "serviceMethod") );
   call.addParameter( "arg1", XMLType.XSD_STRING, ParameterMode.IN);
   call.setReturnType( org.apache.axis.encoding.XMLType.XSD_STRING );
 
   String ret = (String) call.invoke( new Object[] { textToSend } );
   
   System.out.println("You typed : " + ret);
  } catch (Exception e) {
   System.err.println(e.toString());
  }
 }
} 
●Client.java

 こちらはSOAPをしゃべりますので、Axis関連のパッケージをインポートし、Callクラス等を駆使してSOAPをしゃべっています。このクライアントの書き方については今後詳しく解説します。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。