Web Serviceは、Webを介して配置し、実行できるAPIのセットです。Web Serviceは、複雑なアプリケーション機能にアクセスする共通インターフェースを提供し、それによって企業内および企業間の分散した異種システムの統合を約束します。Web
Serviceテクノロジーは、IBMやMicrosoftをはじめとする大手ソフトウェア・ベンダー数社によってサポートされており、Web開発コミュニティー内でも関心が高まっています。Web
Serviceの詳細については、developerWorks Web Serviceゾーンをご覧ください。
Web Serviceは、本質的に異なるRPCモデルを、さまざまなシステムが理解でき、既存のWebテクノロジーを利用してサポートできる共通の言語にまとめる方法を提供します。それによって、J2EEでコーディングされたサービスを、Windowsマシン上のVisual
BasicクライアントやLinuxマシン上で実行されたPHPページからアクセスして呼び出すことが可能になります。これを実現するために、Web
Serviceテクノロジーにはカプセル化、メッセージ・パッシング、動的バインディング、サービス記述、照会などのテクノロジーが含まれています。
Web Serviceテクノロジーには、大きく分けて3つの構成要素があります。
保管および検索
標準は、UDDI(Universal Description, Discovery, and Integration)です。この記事では、Web
Serviceの保管および検索については取り上げません。詳細については、UDDI Webサイトをご覧ください。
このセクションでは、My Place(特定のユーザーが所属するすべてのQuickPlaceのリスト)を配信し、そのWeb
Serviceを表すWSDLを作成するWeb Serviceを開発します。その後、SOAP対応WebクライアントにこのWeb
Serviceを利用可能にするには、このWSDLをUDDIディレクトリーに公開する必要があります(この記事では、UDDIディレクトリーへのWSDLの公開は扱いません。詳細については、UDDIホーム・ページをご覧ください)。
My Place Web Serviceは、次のようないくつかのテクノロジーを用いて作成することができます。
Java
Web Serviceを作成し、ApacheまたはWebSphereサーバーでホスティングします。その後、SOAPメッセージを処理するサーブレットをコーディングし、QuickPlaceサーバーでホスティングします。
myplaceserviceエージェント
My Place Web Serviceは、Place Catalogサーバー上にあるDominoデータベースにDominoエージェントとして配置されます。この例では、エージェント名を「myplaceservice」、Dominoデータベース名を「MyPlaces.nsf」としています。このエージェントは、一度だけ実行するエージェントです。
myplaceserviceエージェント
My Place Web Serviceは、Place Catalogサーバー上にあるDominoデータベースにDominoエージェントとして配置されます。この例では、エージェント名を「myplaceservice」、Dominoデータベース名を「MyPlaces.nsf」としています。このエージェントは、一度だけ実行するエージェントです。
エージェントのコードは、大きく4つのセクションに分かれています。最初のセクションは、基本的な変数/オブジェクト宣言からなります。
Sub Initialize
Dim s As New notessession
Dim db As notesdatabase
Dim curdb As notesdatabase
Dim pdoc As notesdocument
Dim coll As notesdocumentcollection
Dim v As notesview
Dim doc As notesdocument
Dim soap As Variant
Dim SOAPin As String
If MethodName = "GetMyQPs" Then
Set curdb=s.currentdatabase
Set db=s.getdatabase(curdb.server,"PlaceCatalog.nsf")
Set v = db.getview("PlacesByMember")
Set coll=v.getalldocumentsbykey(scs$)
Set pdoc = coll.getfirstdocument
ch$ = ""
While Not pdoc Is Nothing
If Len(ch$) < 1 Then
ch$="http://"+pdoc.PlaceServerName(0)+"/"+pdoc.PlaceName(0)
Else
ch$=ch$+";"+"http://"+pdoc.PlaceServerName(0)+"/"+pdoc.PlaceName(0)
End If
Set pdoc=coll.getnextdocument(pdoc)
Wend
response=ch$
rr$ = |<m:| & MethodName & "Response" & | xmlns:m="|
& NameSpace & |
" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
| & _
|<Answer xsi:type="xsd:string">| & response & |</Answer>|
& _
|</m:| & MethodName & |Response>|
Else
response = "Invalid Method Name used"
rr$ = |<SOAP-ENV:FAULT><faultcode>Client.Authentication</faultcode>
<faultstring>Invalid Methd Name</faultstring> <faultactor>http://localhost/</faultactor>
<detail xsi:type="xsd:string"/>
</SOAP-ENV:Fault> |
End If