検索
連載

UDDIって何だ?SOAPの仕掛け(3)(4/4 ページ)

PC用表示 関連情報
Share
Tweet
LINE
Hatena
前のページへ |       

UDDIの実装

現在利用可能なUDDIレジストリは?

 UDDIは、このような規約を作っただけでなく、IBM、Microsoft、Aribaの3社がそれぞれ実装を作ってインターネットに公開している。これは、初期公開βテスト(initial public beta testing)と呼ばれるもので、レジストリを実際にインターネットに公開して、テストを行っているという状況である(筆者注:最近、Ariba がUDDI運営計画を破棄し、ヒューレット・パッカード社が 引き継ぐというニュースが流れた)。

 3社のレジストリは、それぞれがレプリケーションをとっており、同一の内容が登録されている。UDDIのページへ行き、右上の方にある

Already registered

のリンクをクリックすると、3社のリストが出るので、選択して「Go」のボタンを押せば、それぞれのサイトに行くことができる。

 これら3つのサイトは、UDDIの(運営者という意味で)オペレータと呼ばれている。

図4 IBMのUDDIサイト
図4 IBMのUDDIサイト

 ビジネス(企業)の登録は、現在のところ無料で行える。将来は、認証などとともに有料にすることも必要であろう、ということもいわれている(ネット上のニュースによれば、今年の中ごろに正式なレジストリを立ち上げる予定であるということである)。

 このサイトから、UDDI Findのリンクに進めば、現在UDDIビジネスレジストリに登録されているサービスを検索することができる。例えば、「Business Name」に「IBM」と入力して「Find」ボタンを押してみよう。IBMが登録した幾つかのビジネスが表示される。「IBM Corporation」を選択して「View Services」を押すと、8つのサービスが登録されていることが分かる。

図5 UDDI検索結果
図5 UDDI検索結果(Webより)

 面白いのは、UDDI PublishやUDDI Inquiryもここに登録されていることだ。UDDIの発行や検索のインターフェイスは当然のことながら、HTTPであり、SOAPをベースにしたXML形式のやりとりでアクセスできる機能であるから、これもWebサービスの一種と考えることができる。

図6 UDDIサービス
図6 UDDIサービス

 UDDI Inquiryサービスは、この検索サービス自体(Web)と、XMLでのアクセス(servlet)の2種類が登録されていることになる。

 ここで、誤解しないでいただきたいのは、UDDIとは、正しくはこのように「人間がブラウザでアクセスして検索する」ためのものではない、ということだ。UDDIレジストリは、ソフトウェアなどが、機械的にアクセスするための道具として位置付けられている(とはいっても、人間が見て接続先を探すということも、もちろんあるだろう)。

UDDI for Java

 UDDIのトップページを見ると、IBMがUDDIアクセスの実装をオープンソースにしたというニュースが出ている(IBM open sources technology for accessing UDDI Business Registry)。それがUDDI for Java(以下UDDI4J)である。UDDI4Jは、Javaプログラムが簡単にUDDIビジネスレジストリにアクセスできるようにするためのAPIクラスライブラリであり、UDDIプログラマーAPIのJavaへのマッピングである。

 UDDI4Jは、UDDI4J Projectのページからダウンロードできる。

■UDDI4Jの利用

 UDDI4Jを稼働させるには、前提として次のものが必要である。

  • Apache SOAP 2.1以上
  • Java activation framework
  • Java Mail
  • Java Secure Sockets Extension(JSSE:HTTPSを使うとき)
  • Xerces
  • TomcatなどのHTTPおよびWebサーバ
  • Java2 1.2.2 以上

 導入方法は、ダウンロードしたアーカイブの中のReleaseNotes.htmlからdocs/index.htmlを開くとそこに記述されているが、要は、すべての必要なjarファイルをクラスパスに含めるということだ。

 UDDIにアクセスするコードは、以下のようなものになる。

// Construct a UDDIProxy object. Enables SSL support
UDDIProxy proxy = new UDDIProxy();
 
try {
  // Select the desired UDDI server node
  proxy.setInquiryURL(
  "http://localhost/services/uddi/testregistry/inquiryapi");
} catch (Exception e) {
  e.printStackTrace();
}
try {
  // Find businesses who's name starts with IBM
  BusinessList bl = proxy.find_business("IBM", null, 0);
  Vector businessInfoVector = 
    bl.getBusinessInfos().getBusinessInfoVector();
  for (int i = 0; i < businessInfoVector.size(); i++) {
    BusinessInfo businessInfo = 
    (BusinessInfo)businessInfoVector.elementAt(i);
    // Print name for each business
    System.out.println(businessInfo.getNameString());
  }
// Handle possible errors
} catch (UDDIException e) {
  DispositionReport dr = e.getDispositionReport();
  if (dr!=null) {
    System.out.println("UDDIException faultCode:" + e.getFaultCode() +
      "\n operator:" + dr.getOperator() +
      "\n generic:" + dr.getGeneric() +
      "\n errno:" + dr.getErrno() +
      "\n errCode:" + dr.getErrCode() +
      "\n errInfoText:" + dr.getErrInfoText());
  }
    e.printStackTrace();
  // Catch any other exception that may occur
} catch (Exception e) {
  e.printStackTrace();
}
リスト1 FindBusinessExample.javaの一部

 このプログラムをインターネットにアクセスした状態で実行すると、リスト2のようなHTTPリクエストが飛ぶ(見やすいように多少改行を修正してある)。

POST /services/uddi/testregistry/inquiryapi HTTP/1.0
Host: localhost:80
Content-Type: text/xml; charset=utf-8
Content-Length: 360
SOAPAction: ""
 
<?xml version='1.0' encoding='UTF-8'?><SOAP-ENV:Envelope 
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" 
xmlns:xsd="http://www.w3.org/1999/XMLSchema">
  <SOAP-ENV:Body>
    <find_business generic="1.0" xmlns="urn:uddi-org:api">
      <name>IBM</name>
    </find_business>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
リスト2 送信されるHTTPリクエスト

 これは、Apache-SOAPに付属してくる、トンネル/モニタによって見ることができる。レスポンスは、非常に長いので割愛させていただく。

 UDDIを使うことによって、さまざまな規約でルール付けられているサービスが統合しやすくなることが、お分かりいただけただろうか。

 SOAP/UDDIとくれば、次はWSDLである。次回は、WSDLの概要と、UDDIとの連携について紹介することとする。

著者紹介

米持 幸寿
日本アイ・ビー・エム株式会社



Copyright © ITmedia, Inc. All Rights Reserved.

前のページへ |       
ページトップに戻る