0. In this document...
このドキュメントは,SOAP4Rのリリースノートです. 本文書が含まれているリリースパッケージについての解説です.
本文書が対象としているSOAP4Rのバージョンは, SOAP4R/1.2.0 です.
1. Changes
SOAP-ml-JP のみなさんに御協力を頂いて, Apache-SOAP, pocketSOAP/0.91, SOAP::Lite for Perl, SOAP/Perl/0.28 との接続テストを行なった結果を反映させました. SOAP/Perl/0.28以外とは順調に通信できてます.
- href/idを使ったXMLをunmarshalできるようになりました (まだ参照をhref/idにmarshalすることはできません)
- base64型をサポートしました.
- SOAPTimeInstantをSOAPDateTimeに名称変更しました. XML Schema PRへの追従です.
- SOAPStructは,同じアクセサを持つ複数の値を扱えるようになりました. SOAPStructとは別クラスにしたほうがよかったかも.
- ルータは異なる名前空間に属するメソッド群を扱えるようになりました.
- <Envelope>のような,非修飾な要素を許可するためのフラグが付きました. 単純にテキストを連結して送るだけのクライアントへの対応が楽になります.
- Apache-SOAPで採用されているMapタイプをサポートしました. RubyのHashもこの型にbindするようにしました. (SOAP4R/1.1までは,Hashを独自形式にmarshalしてました. 1.1でmarshalされたXMLは,1.2でもHashにunmarshalすることができますが, 1.2では新形式にmarshalされるため,それを1.1でunmarshalすると,Hashではなく Structになってしまいます.1.2と1.1の非互換に注意してください)
- 本来ならStructのサブクラスとしてunmarshalすべき型のうち, 'unknown:SOAPStruct'という名前の型を,内部クラスのSOAPStructとして unmarshalしてしまっていました.修正しました.
- SOAPArrayとSOAPStructに,map!およびmembersメソッドを追加しました.
- SOAPBodyにrequest,responseおよびfaultメソッドを追加しました.
- 知らないヘッダ項目を見ると例外で落ちてしまっていました.無視するようにしました.
2. Install
パッケージを取得し,展開・伸長してください. libディレクトリに含まれているファイルが,SOAP4Rのライブラリプログラム本体です. インストーラは用意されていませんので,lib下の各ファイルを適当なディレクトリにコピーし,includeして使ってください.
SOAP4Rのライブラリプログラムが動作するためには,redistディレクトリに含まれている,以下の再配布ライブラリプログラムも必要です. これらもライブラリ本体と一緒に適当なディレクトリにコピーしておいてください.
- date3.rb
- by ふなばさん(http://www.kt.rim.or.jp/~tadf/ruby.html)
- parsedate3.rb
- by ふなばさん(http://www.kt.rim.or.jp/~tadf/ruby.html)
- http-access.rb
- by 前橋さん(http://www.jin.gr.jp/~nahi/Ruby/ruby.shtml#http-access)
- uri.rb
- by 越水さん(http://www02.so-net.ne.jp/~greentea/ruby/uri/)
パッケージ中の各ファイルの解説です.
- lib/
- SOAP4Rのライブラリプログラム本体.
- sample/
- SOAP4Rを利用するサンプルプログラム.
- sample/apacheClient.rb
- SOAP-RPCクライアントのサンプルプログラム.
IBMのSOAP for JavaもしくはApache SOAPの,stockquoteおよびaddressbookデモに接続する.
先にサーバ側のインストール & deployを済ませておくこと.
./sampleClient.rb http://localhsot:2020/ibm-soap/rpcrouter.jsp
などとして起動する. - sample/apacheServer.rb
- SOAP-RPCサーバのサンプルプログラム. Apache-SOAPライクな,getQuoteやgetAddressFromNameインタフェイスが定義されています. インタフェイスだけで,機能はありません.
- sample/RAA/*
- SOAP-RPCクライアントのサンプルプログラムその2.
www.ruby-lang.orgにあるRAAサーバに接続するプログラム群です.
- soap4r.rb, soap4rApp.rb: SOAP4Rを使うRubyスクリプト
- xmlrpc4r.rb: xmlrpc4r(RAAにあります)を使うRubyスクリプト
- pocketSOAP.js: pocketSOAPを使うJScriptスクリプト
- SOAP::Lite.pl: SOAP::Lite for Perlを使うPerlスクリプト
- redist/
- 各種再配布パッケージから,SOAP4Rで利用するファイル群. 利用させて頂いているみなさん,どうもありがとうございます.
- redist/archive/
- 各種再配布パッケージそのもの. 各パッケージの著作権および各種隣接権については,各パッケージに記載されているものに従うこと.
3. Uninstall
インストール時に作成されたファイルを全部消してください.
4. What is SOAP4R?
SOAP4Rは, Simple Object Access Protocol (SOAP) 1.1 (W3C Note) をRubyから利用するためのライブラリプログラムです. SOAPについての詳細は, SOAP-ml-JP Home Page にあるリンク集, SOAP-ml-JP Links を御覧ください.
Restrictions を見るとわかると思いますが,今のところRPCに特化した機能のみ提供されています.
他実装との互換性の情報を募集しています. 「〜につないでみたが上手くいかない」「上手くいった」という情報がありましたら, お気軽に nakahiro@sarion.co.jp まで御連絡ください.可能な限り対応します.
5. Dependencies
SOAP4Rを利用するためには,以下のものが必要です.
- SOAP4Rは Ruby 向けのライブラリです. もちろんRuby本体が必要です. 稼働テストは1.6系で行なっています. クラス変数を使っているため,1.4系では動きません.
- SOAP4RはXML関連の処理を XMLParserモジュール に依存しています. XMLParserモジュールをインストールしておく必要があります.
- SOAP-RPCクライアントサンプルを動かすためには, IBMのSOAP for Java もしくは Apache SOAP が必要です.
6. Restrictions
SOAP4Rは SOAP 1.1 (W3C Note) 仕様をサポートすることを目的としていますが,現時点では以下に示す各種様々な制限があります. これらは全て,SOAP4Rの実装による制限です.
- SOAP Envelopeについて
- SOAP actor属性に対応していません.
- SOAP Fault Codesを真面目に扱ってません.
- SOAP EnvelopeにおけるencodingStyleが,SOAP Encodingに固定されています. SOAP for Javaのように素のXMLを埋めるencoding,などに対応していません.
- SOAP Encodingについて
- encodingStyleはSOAP Encodingに固定されています. データ構造の途中を別encodingStyleにすることはできません.
- XML Schemaを読んでencode/decodeすることはできません. SOAP Encoding本体に埋め込まれたxsi:typeのみを利用します.
- 次元が1以外の配列,Partially Transmitted Arrays(部分配列),Sparse Arrays(粗な配列)に対応していません.
- SOAP root属性に対応していません.
- 多重参照へのmarshalling(unmarshallingは可能です)
- その他
- トランスポートはHTTPのサーバ(CGI),クライアント側のみです.
- HTTP Extension Framework(M-POST)に対応していません.
- Content-Typeは'text/xml'です. charset指定には対応していません.
7. History
- 1.2.0 - March 30, 2001
- SOAP-ml-JP
のみなさんに御協力を頂いて,
Apache-SOAP,
pocketSOAP/0.91,
SOAP::Lite for Perl,
SOAP/Perl/0.28
との接続テストを行なった結果を反映させました.
SOAP/Perl/0.28以外とは順調に通信できてます.
- href/idを使ったXMLをunmarshalできるようになりました (まだ参照をhref/idにmarshalすることはできません)
- base64型をサポートしました.
- SOAPTimeInstantをSOAPDateTimeに名称変更しました. XML Schema PRへの追従です.
- SOAPStructは,同じアクセサを持つ複数の値を扱えるようになりました. SOAPStructとは別クラスにしたほうがよかったかも.
- ルータは異なる名前空間に属するメソッド群を扱えるようになりました.
- <Envelope>のような,非修飾な要素を許可するためのフラグが付きました. 単純にテキストを連結して送るだけのクライアントへの対応が楽になります.
- Apache-SOAPで採用されているMapタイプをサポートしました. RubyのHashもこの型にbindするようにしました. (SOAP4R/1.1までは,Hashを独自形式にmarshalしてました. 1.1でmarshalされたXMLは,1.2でもHashにunmarshalすることができますが, 1.2では新形式にmarshalされるため,それを1.1でunmarshalすると,Hashではなく Structになってしまいます.1.2と1.1の非互換に注意してください)
- 本来ならStructのサブクラスとしてunmarshalすべき型のうち, 'unknown:SOAPStruct'という名前の型を,内部クラスのSOAPStructとして unmarshalしてしまっていました.修正しました.
- SOAPArrayとSOAPStructに,map!およびmembersメソッドを追加しました.
- SOAPBodyにrequest,responseおよびfaultメソッドを追加しました.
- 知らないヘッダ項目を見ると例外で落ちてしまっていました.無視するようにしました.
- 1.1.0 - March 23, 2001
-
結構たくさん変更しました.なひ用途でしかテストできてないので,
安定度は低いと思いますので御注意ください.
特に他SOAP実装とのinteroperabilityが不安です.
「〜につないでみたが上手くいかない」というレポートがありましたら,
是非なひ(nakahiro@sarion.co.jp)まで御連絡ください.可能な限り対応します.
- RPCサーバとしての機能を追加しました.
- RPCクライアント/サーバ機能の実装を,SOAP本体から分離しました.
- RPCでRuby専用に使える型として,Date,Hashをサポートしました. (知らない型については,従来通り単なるStructになります)
- TimeInstantとして,Timeではなく, ふなばさんのdate3.rbのDateを使うようにしました. また,parsedate2→parsedate3に移行してみました.
- RPCサーバとしての機能を追加している最中に, SOAPArrayおよびSOAPStructのencoding/decodingのバグ(特に名前空間回り)を たくさん修正しました.
- 1.0.2 - November 11, 2000
- 若干古くなってきたので,細かいリフレッシュを行ないました.
- ruby 1.6.x対応しました.
- 対応するuri.rbのバージョンが3.54から4.22になりました.
- サンプルがxml-soap/2.0に対応しました.
- 1.0.1 - July 27, 2000
- SOAP/1.1の配列に対応しました. 実は対応してなかったんです...すいません. 制約 はまだたくさん残っていますので注意してください.
- 1.0.0 - July 17, 2000
- これが最初のリリースです. 変更点もなにもありません. なら書くな.^^;
8. Author
- Name
- NAKAMURA, Hiroshi (aka NaHi or nakahiro)
- nakahiro@sarion.co.jp
- URL
- http://www.jin.gr.jp/~nahi/
9. Copyright
本プログラムの著作権および各種隣接権について.GPL2です. 詳細は GNU GENERAL PUBLIC LICENSE Version 2, June 1991 を参照してください.
SOAP4R
Copyright © 2000, 2001 NAKAMURA, Hiroshi.
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License(the file named `COPYING') for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.