Webサービスの利用

 

GLUEで、Webサービスを利用するための最低条件は、公開されているWebサービスのWSDLのURL (もしくはファイル) を知っておくことである。GLUEは、このWSDLから、プロバイダの公開しているサービスのインターフェースやバインドするプロトコルや接続先を知るからである。WSDLから情報を得た後は、動的にプロキシを作成しそのWebサービスを利用可能にする。そのWebサービスを利用可能にするために必要なことは下記のメソッドを実行するだけである。

  Registry.bind(WSDLのURL, 公開されているサービスのインターフェースクラス);

 

 

クライアントクラスを作成して利用する

 

クライアントクラスを作成してWebサービスを利用するためには以下の手順を行う。

1 公開されているWSDLからインターフェースクラスを生成する
2 Registry.bindを利用したクライアントクラスを作成する
3 実行する

 

  1 公開されているWSDLからインターフェースクラスを生成する
   

GLUEには、WSDLからインターフェースクラスや接続するためのヘルパークラス、さらにはコンプレックスタイプなどのやり取りに使用するマップファイルなどを生成するために「wsdl2java」というユーティリティを用意している。このユーティリティを利用し、必要なクラスを生成する。 (wsdl2java の利用方法に関しては、ユーザーガイドを参照してほしい)

wsdl2javaの基本的な利用方法は:

wsdl2java wsdlのURL

さて、実際にwsdl2javaから必要なクラスを生成しよう。公開されているwsdlのURLは「http://localhost:8020/glue/hello.wsdl」であるから、wsdl2javaの引数にこのURLを与えて実行しよう。下記のように2つのjavaのファイルが生成されたはずだ。

C:\tutorial>wsdl2java http://localhost:8020/glue/hello.wsdl
write file IHello.java
write file HelloHelper.java
C:\tutorial>

この2つのファイルは公開されているWebサービスを利用するためのインターフェースクラスと接続するためのヘルパークラスである。内容を確認しよう。

インターフェースクラス: IHello.java

// generated by GLUE/wsdl2java on Mon Apr 29 17:22:05 JST 2002
public interface IHello {
 String sayHello();
}

上記のようにwsdl2javaによって生成されたインターフェースクラスは公開しているHelloクラスの持つ「sayHello」メソッドを定義している。このインターフェースを利用してクライアントクラスはWebサービス上のメソッドを呼び出すわけである。

なお、ヘルパークラスはこのチュートリアルでは利用しないので、興味があったらみてほしい。

  2 クライアントクラスの作成
   

クライアントクラスは、公開されたwsdlのURLからプロキシを生成し、wsdl2javaで生成したインターフェースクラスにを利用してリモートのメソッドを呼び出す。この機能は、Registry.bindというメソッドにより実現される。ここでは、クライアントクラス「TestHello」を作成し、Webサービスを利用する。

クライアント (TestHello.java) コードを下記に示す。

import electric.registry.Registry;
public class TestHello {
 public static void main( String[] args ) throws Exception
 {

  String url = "http://localhost:8020/glue/hello.wsdl";
  // Webサービスへ接続し、プロキシを生成する
  IHello proxy = (IHello)Registry.bind(url, IHello.class);
  // Webサービスメソッドの呼び出し
  String result = proxy.sayHello();
  System.out.println(" RESULT = " + result);
 }
}

あとは、このTestHello.javaをコンパイルして実行するだけだ。

  3 クライアントの実行
   

上記2で作成した、TestHello.javaをコンパイルして実行してみよう。

C:\tutorial> javac TestHello.java
C:\tutorial> java TestHello
RESULT = HelloWorld!!
C:\tutorial>

「HelloWorld!!」という結果がえられれば、クライアントはWebサービスへアクセスすることに成功したことになる。

 

 

補足: Logの取得

   

GLUEを利用して、Webサービスの発行と利用を実行してきた。しかし、サーバー/クライアントともにどのような、SOAPのメッセージや、HTTPのやり取りをしているかに関してはまったく見ることができていない。そこで、GLUEのロギングフレームワークを利用して、簡単にログを取得する方法を紹介する。

GLUEのサーバー/クライアントにおいて、メッセージのログを取得する方法は2通りある。

ひとつは、electric.util.log.Logクラスの「startLogging (カテゴリ)」を利用してログを採取する方法とjava実行時に動的にLogの指定をする方法である。
ここでは、動的に実行する方法を説明する。「Log 」クラスの利用方法に関しては、こちらも「ユーザーガイド」を参照してほしい。

   

サーバー/クライアントクラス実行時にログの設定をする方法

   

GLUEでは、実行時に動的にログ取得の方法を設定/変更することが可能である。その設定は下記プロパティをに値 (カテゴリ) を設定することにより可能となる。

electric.logging

このプロパティは以下のように利用する (下記例では、SOAPのログを取得する設定)

C:\tutorial>java -Delectric.logging="SOAP" TestHello

LOG.SOAP: request to http://127.0.0.1:8020/glue/hello
<?xml version='1.0' encoding='UTF-8'?>
<soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd ='http://www.w3.org/2001/XMLSchema' xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/' xmlns:soapenc='http://schemas.xmlsoap.org/soap/encoding/' soap:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'>
 <soap:Body>
  <n:sayHello xmlns:n='http://tempuri.org/Hello'/>
 </soap:Body>
</soap:Envelope>

LOG.SOAP: response from http://127.0.0.1:8020/glue/hello
<?xml version='1.0' encoding='UTF-8'?>
<soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd ='http://www.w3.org/2001/XMLSchema' xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/' xmlns:soapenc='http://schemas.xmlsoap.org/soap/encoding/' soap:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'>
 <soap:Body>
  <n:sayHelloResponse xmlns:n='http://tempuri.org/Hello'>
   <Result xsi:type='xsd:string'>HelloWorld!!</Result>
  </n:sayHelloResponse>
 </soap:Body>
</soap:Envelope>
RESULT = HelloWorld!!
C:\tutorial>

簡単にログの取得が可能となるので、是非活用してほしい

  GLUEによる、Webサービスの発行と利用のまとめ
 

GLUEによるWebサービス構築の特徴は:

・GLUEのインストールは環境変数の設定だけである。
・GLUEはGLUE単体でWebサービスの発行が可能なので、非常に単純に構築できる
・GLUEによるWebサービスの発行は、2つの機能を2つのメソッドで実装するだけである。
・GLUEによるWebサービスの利用も、wsdl2javaを利用することにより最低限のコーディングですむ

上記の特徴から現れているように、GLUEはWebサービスを簡単に構築/利用するためのミドルウェアなのである。


もどる

Copyright © XMLコンソーシアム 2002 All rights reserved.
copyright © 2000-2002 tocka, inc., tokyo, japan / all rights reserved