Welcome to the "trac"-ing site of soap4r!
[soap4r] [httpclient] [openpgp4u] [pkcs1] [logger] [csv] [vtr]

root/tags/RELEASE_1_5_1/RELEASE_en.html

Revision 1032, 50.8 kB (checked in by nahi, 5 years ago)

Version: 1.5.1

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to author date id revision
Line 
1 <?xml version="1.0"?>
2 <!DOCTYPE html
3     PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
4     "DTD/xhtml1-strict.dtd">
5 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
6 <head>
7 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
8 <meta http-equiv="Content-Style-Type" content="text/css" />
9 <link rev="MADE" href="mailto:nakahiro@sarion.co.jp" />
10 <link rel="StyleSheet" href="rubyStyle.css" type="text/css" media="screen" />
11 <title>Release Notes - SOAP4R</title>
12 </head>
13 <body>
14
15 <div class="header">
16 <h1>
17 Release Notes - SOAP4R
18 </h1>
19
20 <p class="status">
21 Last modified: November  3, 2003<br />
22 Created: July 17, 2000
23 </p>
24 </div>
25
26 <hr />
27
28 <div class="main">
29 <h2><span class="content">0. In this document...</span></h2>
30
31 <p>
32 This is Release Notes of SOAP4R.
33 </p>
34
35 <p>
36 Target SOAP4R version: SOAP4R/1.5.1
37 </p>
38
39 <ol>
40 <li><a href="#changes">Changes</a></li>
41 <li><a href="#install">Install</a></li>
42 <li><a href="#uninstall">Uninstall</a></li>
43 <li><a href="#whats">What is SOAP4R?</a></li>
44 <li><a href="#dependencies">Dependencies</a></li>
45 <li><a href="#samples">Samples</a></li>
46 <li><a href="#restrictions">Restrictions</a></li>
47 <li><a href="#resources">Resources</a></li>
48 <li><a href="#history">History</a></li>
49 <li><a href="#author">Author</a></li>
50 <li><a href="#copyright">Copyright</a></li>
51 </ol>
52
53 <h2 id="changes" name="changes"><span class="content">1. Changes</span></h2>
54
55 <p>
56 Important news:  Soap4r library is included in ruby distribution after
57 ruby/1.8.1.  You might not be need to install this package under ruby/1.8.
58 The files this package includes and are not included in ruby/1.8 distribution
59 are an application program (bin/wsdl2ruby) and some test codes.
60 Consider to get this package if,
61 </p>
62
63 <ul>
64   <li>You need the WSDL to ruby (reads a WSDL file and generates stubs and Ruby class definitions) application, or</li>
65   <li>You want to use soap4r under ruby/1.6.</li>
66 </ul>
67
68 <ul>
69   <li>Features;
70   <ul>
71     <li>Sample updates; Update Amazon Web Service WSDL (v2 -&gt; v3), and update RAA WSDL(0.0.1 -&gt; 0.0.2).
72     <li>Supports ivars of basetype and extending modules marshalling with XML attribute.
73 Using XML attribute to support ruby object dependent information, marshalled object keeps compatibility with SOAP spec.
74 It shows the power of XML, extensibility.<br/>
75 Now I think SOAP marshaller supports all kind of object graph which is supported by Ruby's original marshaller.</li>
76     <li>Better XML pretty printing.
77 <pre>
78 puts SOAPMarshal.dump(Person.new(&quot;NaHi&quot;, 33))
79
80 =&gt;
81
82 &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?&gt;
83 &lt;env:Envelope xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot;
84     xmlns:env=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot;
85     xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&gt;
86   &lt;env:Body&gt;
87     &lt;Person xmlns:n1=&quot;http://www.ruby-lang.org/xmlns/ruby/type/custom&quot;
88         xsi:type=&quot;n1:Person&quot;
89         env:encodingStyle=&quot;http://schemas.xmlsoap.org/soap/encoding/&quot;&gt;
90       &lt;age xsi:type=&quot;xsd:int&quot;&gt;33&lt;/age&gt;
91       &lt;name xsi:type=&quot;xsd:string&quot;&gt;NaHi&lt;/name&gt;
92     &lt;/Person&gt;
93   &lt;/env:Body&gt;
94 &lt;/env:Envelope&gt;
95     </pre></li>
96   </ul></li>
97
98   <li>Installation;
99   <ul>
100     <li>The previous version soap4r/1.5.0 required http-access2 to be installed to build CGI server, but no longer needed fot this purpose now.
101 You can use almost all features of soap4r without http-access2,
102 but for actual usage, consider installing http-access2 for speed and
103 thread-safe SOAP client.</li>
104     <li>Under ruby/1.8, installer installs lib files to rubylibdir(e.g. /usr/local/lib/ruby/1.8) instead of sitelibdir(e.g. /usr/local/lib/ruby/site_ruby/1.8)</li>
105   </ul></li>
106
107   <li>Bug fixes;
108   <ul>
109     <li>Do not introduce XSD constants to toplevel.</li>
110     <li>'NO_PROXY'/'no_proxy' env var was not supported under net/http.  Fixed.</li>
111     <li>Remove some ruby/1.8 dependent codes.  Should work fine under 1.6, too.</li>
112     <li>XSD::XSDString did not check its value space under $KCODE = 'NONE' env for example where iconv module is not installed.</li>
113     <li>XSD::XSDFloat, XSD::XSDDouble: add +/- sign explicitly when stringified and embedded into XML instance.  Ruby's sprintf may format -0.0 as "0.0" (no minus sign) depending on underlying C sprintf implementation.</li>
114   </ul></li>
115 </ul>
116
117 <p>
118 Thanks to all of soap4r users for their support.
119 </p>
120
121 <h2 id="install" name="install"><span class="content">2. Install</span></h2>
122
123 <p>
124 At first, see <a href="#dependencies">Dependencies</a> section.
125 You may need to install some extra packages.
126 Next, get the archived file of SOAP4R and extract it, then simply try;
127 </p>
128 <pre class="path">
129 $ ruby install.rb
130 </pre>
131
132 <p>
133 Necessary files will be installed to suitable directory.
134 </p>
135
136 <p>
137 Files in lib/soap directory are SOAP4R library program itself.
138 </p>
139
140 <dl>
141 <dt class="path">lib/</dt>
142 <dd>Libraries.</dd>
143
144 <dt class="path">sample/</dt>
145 <dd>SOAP4R samples.
146 See <a href="#samples">Samples</a> section.</dd>
147
148 <dt class="path">test/</dt>
149 <dd>Some tests.
150 Unit test MUST cover all lines of code, but far from enough so far...
151 <br/>
152 test/interopR2/ directory includes Clients/Server for
153 <a href="http://www.xmethods.net/ilab/">`SOAPBuilders Interoperability Lab.'</a>
154 Followings are advanced examples to use complex type transmit,
155 sending base64 encoded string, multi-dimensional array, and so on.
156 <ul>
157 <li>test/interopR2/server.rb is a RPC Server side implementation.</li>
158 <li>test/interopR2/client.rb is a RPC Client side implementation.</li>
159 <li>test/interopR2/base.rb includes common definitions for client/server.</li>
160 </ul>
161 </dd>
162 </dl>
163
164 <h2 id="uninstall" name="uninstall"><span class="content">3. Uninstall</span></h2>
165
166 <p>
167 Simply delete installed files.
168 </p>
169
170 <h2 id="whats" name="whats"><span class="content">4. What is SOAP4R?</span></h2>
171
172 <p>
173 'SOAP4R' is an implementation of
174 <a href="http://www.w3.org/TR/SOAP/">Simple Object Access Protocol (SOAP) 1.1 (W3C Note)</a>.
175 </p>
176
177 <p>
178 Comments, information such as interoperability between SOAP4R and another implementation are welcomed.
179 Feel free sending mail to
180 <a href="mailto:nakahiro@sarion.co.jp" class="path">nakahiro@sarion.co.jp</a>.
181 </p>
182
183 <h2 id="dependencies" name="dependencies"><span class="content">5. Dependencies</span></h2>
184
185 <p>
186 SOAP4R is written in <a href="http://www.ruby-lang.org">Ruby</a> and
187 aims to use with Ruby application.
188 You have to install Ruby itself.
189 Ruby/1.6 series or later is required.
190 </p>
191
192 <p>
193 SOAP4R depends on following Ruby modules in
194 <a href="http://raa.ruby-lang.org">RAA</a>.
195 You also have to install these modules to use SOAP4R.
196 </p>
197
198 <dl>
199 <dt class="path">XML processor</dt>
200 <dd>SOAP4R requires a XML processor package installed.
201 Note: ruby/1.8 includes REXML so you don't have to install extra XML parser library.<br/>
202 For now, one of following XML processor must be installed
203 (SOAP4R automatically detects it in runtime).
204 <ul>
205 <li><a href="http://raa.ruby-lang.org/list.rhtml?name=xmlscan">[RAA:xmlscan]</a> (0.2.3, 0.3.x)</li>
206 <li><a href="http://raa.ruby-lang.org/list.rhtml?name=rexml">[RAA:REXML]</a> (2.7.1)</li>
207 <li><a href="http://raa.ruby-lang.org/list.rhtml?name=rexml-stable">[RAA:REXML-stable]</a> (2.4.8)</li>
208 <li><a href="http://raa.ruby-lang.org/list.rhtml?name=xmlparser">[RAA:XMLParser]</a> (0.6.5)</li>
209 </ul></dd>
210
211 <dt class="path"><a href="http://raa.ruby-lang.org/list.rhtml?name=devel-logger">[RAA:devel-logger]</a> (1.1.0)</dt>
212 <dd>Logging utility by NaHi.  ruby/1.8 includes this library so you don't have to re-install it.</dd>
213
214 <dt class="path"><a href="http://raa.ruby-lang.org/list.rhtml?name=webrick">[RAA:webrick]</a> (1.3.1) (required for soap server)</dt>
215 <dd>TCP server toolkit by Gotoyuzo.
216 ruby/1.8 includes WEBrick in standard distribution library.</dd>
217
218 <dt class="path"><a href="http://raa.ruby-lang.org/list.rhtml?name=http-access2">[RAA:http-access2]</a> (2.0.0) (required for SOAP CGI server, recommended for SOAP client)</dt>
219 <dd>Yet another HTTP client implementation by NaHi.</dd>
220
221 <dt class="path"><a href="http://raa.ruby-lang.org/list.rhtml?name=date2">[RAA:date2]</a> (3.2) (required under ruby/1.6)</dt>
222 <dd>Date and DateTime implementation by Todayoshi Funaba.
223 Note: From ruby/1.8, this module is included in standard distribution.
224 You don't have to install it if you are using ruby/1.8 or later.</dd>
225
226 <dt class="path"><a href="http://raa.ruby-lang.org/list.rhtml?name=uconv">[RAA:uconv]</a> (0.4.10) (required for UTF-8 handling under ruby/1.6)</dt>
227 <dd>by Yoshida Masato.
228 It is requred when you use ruby/1.6 and want automatic CES conversion between
229 SJIS &lt;-&gt; UTF8 and EUC &lt;-&gt; UTF8.
230 Under ruby/1.8, soap4r uses iconv in standard distribution library.
231 Note: SJIS &lt;-&gt; EUC uses NKF module which is in standard distribution.
232 I will support Iconv for more conversion set.
233 </dd>
234
235 </dl>
236
237 <h2 id="samples" name="samples"><span class="content">6. Samples</span></h2>
238
239 <p>
240 Samples are in sample/ directory of distribution.
241 Some samples try to connect to public servers.
242 Set environment variable HTTP_PROXY if you are in a firewall and you have
243 http proxy to the internet like;
244 </p>
245 <pre class="path">
246 $ export HTTP_PROXY=http://myproxyserver:8080
247   or
248 $ setenv HTTP_PROXY http://myproxyserver:8080
249 </pre>
250
251 <dl>
252 <dt class="path">babelfish.rb</dt>
253 <dd>A client for
254 <a href="http://www.xmethods.com/ve2/ViewListing.po?serviceid=14">BabelFish</a>
255 which namespace URI is 'urn:xmethodsBabelFish'.
256 <pre class="path">
257 $ ./babelfish.rb "Text to translate" [ translation pattern like 'en_fr' ]
258 </pre>
259 </dd>
260
261 <dt class="path">whois.rb</dt>
262 <dd>A client for
263 <a href="http://www.xmethods.com/ve2/ViewListing.po?serviceid=34">SQLData's WHOIS</a>
264 which namespace URI is 'http://www.SoapClient.com/xml/SQLDataSoap.xsd'.
265 <pre class="path">
266 $ ./whois.rb ruby-lang.org
267 </pre>
268 CAUTION: This WhoIs server does not handle non-ascii characters correctly.
269 Querying domain which entry contains Japanese or so will hang.  Gee.
270 </dd>
271
272 <dt class="path">digraph.rb</dt>
273 <dd>A sample of SOAP marshalling/unmarshalling.
274 It creates a digraph that contains multi-ref-ed nodes at first
275 and marshals this object to get serialized XML instance.
276 Then reads and unmarshals this XML instance to recover a object
277 which has the same links among nodes in the digraph.
278 </dd>
279
280 <dt class="path">apacheClient.rb</dt>
281 <dd>SOAP-RPC client sample which connects with demonstration server;
282 stockquote and addressbook in Apache-SOAP.
283 You have to install Apache-SOAP and deploy demostration programs.<br />
284 To execute;
285 <pre class="path">
286 $ ./apacheClient.rb http://localhsot:2020/xml-soap/rpcrouter/rpcrouter.jsp
287 </pre>
288 </dd>
289
290 <dt class="path">GoogleSearch/</dt>
291 <dd>A sample client to search with <a href="http://www.google.com/apis/">Google Web API</a> using WSDL.
292 You need to get a developer's key to use it.
293 See wsdlDriver.rb.
294 </dd>
295
296 <dt class="path">Amazon/</dt>
297 <dd>A sample client to connect with <a href="http://associates.amazon.com/exec/panama/associates/ntg/browse/-/1067662/086-5207681-4585409">AmazonWebServices</a> using WSDL.
298 See wsdlDriver.rb.
299 </dd>
300
301 <dt class="path">Calc/</dt>
302 <dd>Calc service contains 2 servers and 2 clients.
303 calc.rb is hosted by server.rb, calc2.rb is hosted by server2.rb.
304 client.rb is for server.rb, client2.rb is for server2.rb.
305 <dl>
306 <dt>calc.rb</dt>
307 <dd>Calc server definition using module and module methods.
308 This module responds 'add', 'sub', 'multi' and 'div'.</dd>
309 <dt>server.rb</dt>
310 <dd>Standalone server.
311 It requires calc.rb and serve module methods of this module.
312 To run this server;
313 <pre class="path">
314 $ ./server.rb
315 </pre>
316 </dd>
317 <dt>server.cgi</dt>
318 <dd>CGI version.
319 To run this server, copy server.cgi and calc.rb to suitable directory
320 of your WWW server.
321 </dd>
322 <dt>client.rb</dt>
323 <dd>It connects to server.rb or server.cgi,
324 and hit methods served by calc.rb.
325 To run the client;
326 <pre class="path">
327 $ ./client.rb
328 </pre>
329 Is it stacked?  Did you run the server.rb?<br/>
330 Turn logger and wireDumpDev in its source on to see logs and wire dumps of
331 SOAP transport.</dd>
332
333 <dt>calc2.rb</dt>
334 <dd>Calc server definition using class and instance methods.
335 An instance of this class holds its value.  Methods 'set' and 'get' is to
336 set/get the value.
337 It also responds to '+', '-', '*', and '/'.
338 </dd>
339 <dt>server2.rb</dt>
340 <dd>It requires calc2.rb and creates an instance of CalcService2
341 that responds all SOAP requests.
342 Since '+', '-' and so on of calc2.rb are not valid name as an element
343 in XML instance,
344 this sample register the method '+' as 'add', '-' as 'sub', and so on.
345 </dd>
346 <dt>server2.cgi</dt>
347 <dd>CGI version.
348 To run this server, copy server2.cgi and calc2.rb to suitable directory
349 of your WWW server.
350 </dd>
351 <dt>client2.rb</dt>
352 <dd>It connects to server2.rb or server2.cgi.
353 Set a value at first and call methods like 'puts objAtServer + 2'.</dd>
354 </dl>
355 </dd>
356
357 <dt class="path">Exchange/</dt>
358 <dd>A sample to retrieve the currency rate from public SOAP service.</dd>
359 <dl>
360 <dt>iExchange.rb</dt>
361 <dd>It includes common definitions for client and server of
362 Exchange service.
363 Including only a definition of namespace URI of this service.</dd>
364 <dt>exchange.rb</dt>
365 <dd>Definition of servant class ExchangeService which returns the currency rate
366 after connecting to another site by SOAP to get the real rate.
367 So that this class is the SOAP server for local client and
368 is also a SOAP client for public server.
369 An instance of this class is hosted by server.rb.
370 The instance responds to only 'getRate' which receives two country code
371 such as 'USA' and 'Japan'.</dd>
372 <dt>server.rb</dt>
373 <dd>It requires exchange.rb and creates an instance of ExchangeService
374 that responds all SOAP requests.
375 To run this server;
376 <pre class="path">
377 $ ./server.rb
378 </pre>
379 </dd>
380 <dt>server.cgi</dt>
381 <dd>CGI version.
382 To run this server, copy server.cgi and exchange.rb to suitable directory
383 of your WWW server.
384 </dd>
385 <dt>client.rb</dt>
386 <dd>It connects to server.rb.
387 Turn logger and wireDumpDev in its source on to see logs and wire dumps of
388 SOAP transport.
389 To run the client;
390 <pre class="path">
391 $ ./client.rb
392 </pre>
393 </dd>
394 </dl>
395 </dd>
396
397 <dt class="path">SampleStruct/</dt>
398 <dd>A sample to transmit complex structured object which has recursive
399 object reference.
400 <dl>
401 <dt>iSampleStruct.rb</dt>
402 <dd>It includes common definitions for client and server of
403 SampleStruct service.
404 Definition of SampleStruct class and namespace URI of this service.</dd>
405 <dt>sampleStruct.rb</dt>
406 <dd>Definition of servant class SampleStructService.
407 An instance of this class is hosted by server.rb.
408 The instance responds to only 'hi' which receives a SampleStruct and wraps
409 it in the new instance of SampleStruct to return .</dd>
410 <dt>server.rb</dt>
411 <dd>It requires sampleStruct.rb and creates an instance of SampleStructService
412 that responds all SOAP requests.
413 To run this server;
414 <pre class="path">
415 $ ./server.rb
416 </pre>
417 </dd>
418 <dt>server.cgi</dt>
419 <dd>CGI version.
420 To run this server, copy server.cgi and sampleStruct.rb to suitable directory
421 of your WWW server.
422 </dd>
423 <dt>client.rb</dt>
424 <dd>It connects to server.rb.
425 Turn logger and wireDumpDev in its source on to see logs and wire dumps of
426 SOAP transport.
427 To run the client;
428 <pre class="path">
429 $ ./client.rb
430 </pre>
431 </dd>
432 </dl>
433 </dd>
434
435 <dt class="path">RAA/</dt>
436 <dd>SOAP-RPC client samples.
437 These programs connect to RAA SOAP Interface on www.ruby-lang.org.
438 <ul>
439 <li>soap4r.rb: Ruby program using SOAP4R</li>
440 <li>xmlrpc4r.rb: Ruby program using xmlrpc4r</li>
441 <li>pocketSOAP.js: JScript program using pocketSOAP</li>
442 <li>SOAP::Lite.pl: Perl program using SOAP::Lite for Perl</li>
443 </ul>
444 Since the server is (still) under testing phase so stable operation is not expected.</dd>
445
446 <li>SampleStructService
447 <dl>
448 <dt>sampleStruct.rb</dt>
449 <dd>A server class definition which wraps a given struct
450 and returns it.
451 An instance of this class is instanciated in httpd.rb and this instance
452 respond to each HTTP request.</dd>
453 <dt>sampleStructClient.rb</dt>
454 <dd>A client to connect soaplet.rb via SOAP/HTTP to call sampleStruct.rb</dd>
455 <dt>iSampleStruct.rb</dt>
456 <dd>Common class(type) definitions for server and client.</dd>
457 </dl></li>
458 </ul>
459 Run the server;
460 <pre class="path">
461 $ ruby httpd.rb
462 </pre>
463 Then, run clients;
464 <pre class="path">
465 $ ruby sampleStruct.rb
466 $ ruby exchangeClient.rb
467 </pre>
468 Set 'logger' and 'wireDumpDev' in clients to see log and wiredumps of SOAP.
469 </dd>
470
471 <dt class="path">ICD</dt>
472 <dd>A client for
473 <a href="http://www.iwebmethod.net/">Insider's Computer Dictionary Web Service</a>.
474 This service is implemented with ASP.NET so that it's also a sample of
475 a client which connects to ASP.NET.
476 CAUTION: this sample contains non-ascii chars in its source and dumped results.
477 <dl>
478 <dt>IICD.rb</dt>
479 <dd>Class(type) definitions for this server.</dd>
480 <dt>icd.rb</dt>
481 <dd>Client implementation.  To run the client;
482 <pre class="path">
483 $ ./icd.rb
484 </pre>
485 </dd>
486 </dl>
487 </dd>
488
489 <dt class="path">WSDemo</dt>
490 <dd>A sample of messaging client.  Server side sample does not exist now...</dd>
491
492 <dt class="path">RWiki</dt>
493 <dd>A sample CGI server which receives a request via SOAP and dispatches it
494 to RWiki server via dRuby.  Naive SOAP/dRuby bridge implementation.</dd>
495
496 </dl>
497
498 <h2 id="restrictions" name="restrictions"><span class="content">7. Restrictions</span></h2>
499
500 <p>
501 The following features of the
502 <a href="http://www.w3.org/TR/SOAP/">SOAP 1.1 (W3C Note)</a>
503 spec are <strong>NOT</strong> currently supported:
504 </p>
505
506 <ul>
507 <li style="margin-top: 2ex;">SOAP Envelope
508 <ul>
509 <li>SOAP actor attribute</li>
510 <li>SOAP mustUnderstand attribute</li>
511 <li>SOAP Fault Codes</li>
512 </ul></li>
513 <li style="margin-top: 2ex;">SOAP Encoding
514 <ul>
515 <li>Decoding using XML Schema</li>
516 </ul></li>
517 <li style="margin-top: 2ex;">Othres
518 <ul>
519 <li>Transport binding except HTTP server and client</li>
520 </ul></li>
521 </ul>
522
523 <h2 id="resources" name="resources"><span class="content">8. Resources</span></h2>
524
525 <dl>
526 <dt class="path"><a href="http://raa.ruby-lang.org/list.rhtml?name=soap4r">[RAA:soap4r]</a></dt>
527 <dd>I will post a new release to RAA.
528 Check RAA to get a new stable (I hope) version.</dd>
529
530 <dt class="path"><a href="http://www.ruby-lang.org/cgi-bin/cvsweb.cgi/lib/soap4r/">CVS</a></dt>
531 <dd>There is the SOAP4R CVS repository in cvs.ruby-lang.org.
532 (Thanks to knu, the maintainer of cvs.ruby-lang.org.)
533 Check here to get most recent (but could be unstable) version.</dd>
534
535 <dt class="path"><a href="http://rrr.jin.gr.jp/rwiki?cmd=view&name=soap4r">SOAP4R Wiki</a></dt>
536 <dd>There is a wiki for SOAP4R, running under
537 <a href="http://www.ruby-lang.org/raa/list.rhtml?name=rwiki">[RAA:RWiki]</a>.
538 Feel free to add your comment there.
539 Any comments are welcomed. (as always)</dd>
540
541 <dt class="path"><a href="http://rrr.jin.gr.jp/soap4r?cmd=view;name=InteropResults">InteropResults</a></dt>
542 <dd>Test results of <a href="http://www.whitemesa.com/interop.htm">SOAPBuilders Interoperability Lab &quot;Round 2&quot;</a>.</dd>
543
544 </dl>
545
546 <h2 id="history" name="history"><span class="content">9. History</span></h2>
547
548 <dl>
549 <dt>1.5.1 - November  2, 2003</dt>
550 <dd>Important news:  Soap4r library is included in ruby distribution after
551 ruby/1.8.1.  You might not be need to install this package under ruby/1.8.
552 The files this package includes and are not included in ruby/1.8 distribution
553 are an application program (bin/wsdl2ruby) and some test codes.
554 Consider to get this package if,
555 <ul>
556   <li>You need the WSDL to ruby (reads a WSDL file and generates stubs and Ruby class definitions) application, or</li>
557   <li>You want to use soap4r under ruby/1.6.</li>
558 </ul>
559
560 <ul>
561   <li>Features;
562   <ul>
563     <li>Sample updates; Update Amazon Web Service WSDL (v2 -&gt; v3), and update RAA WSDL(0.0.1 -&gt; 0.0.2).
564     <li>Supports ivars of basetype and extending modules marshalling with XML attribute.
565 Using XML attribute to support ruby object dependent information, marshalled object keeps compatibility with SOAP spec.
566 It shows the power of XML, extensibility.<br/>
567 Now I think SOAP marshaller supports all kind of object graph which is supported by Ruby's original marshaller.</li>
568     <li>Better XML pretty printing.
569 <pre>
570 puts SOAPMarshal.dump(Person.new(&quot;NaHi&quot;, 33))
571
572 =&gt;
573
574 &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?&gt;
575 &lt;env:Envelope xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot;
576     xmlns:env=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot;
577     xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&gt;
578   &lt;env:Body&gt;
579     &lt;Person xmlns:n1=&quot;http://www.ruby-lang.org/xmlns/ruby/type/custom&quot;
580         xsi:type=&quot;n1:Person&quot;
581         env:encodingStyle=&quot;http://schemas.xmlsoap.org/soap/encoding/&quot;&gt;
582       &lt;age xsi:type=&quot;xsd:int&quot;&gt;33&lt;/age&gt;
583       &lt;name xsi:type=&quot;xsd:string&quot;&gt;NaHi&lt;/name&gt;
584     &lt;/Person&gt;
585   &lt;/env:Body&gt;
586 &lt;/env:Envelope&gt;
587     </pre></li>
588   </ul></li>
589
590   <li>Installation;
591   <ul>
592     <li>The previous version soap4r/1.5.0 required http-access2 to be installed to build CGI server, but no longer needed fot this purpose now.
593 You can use almost all features of soap4r without http-access2,
594 but for actual usage, consider installing http-access2 for speed and
595 thread-safe SOAP client.</li>
596     <li>Under ruby/1.8, installer installs lib files to rubylibdir(e.g. /usr/local/lib/ruby/1.8) instead of sitelibdir(e.g. /usr/local/lib/ruby/site_ruby/1.8)</li>
597   </ul></li>
598
599   <li>Bug fixes;
600   <ul>
601     <li>Do not introduce XSD constants to toplevel.</li>
602     <li>'NO_PROXY'/'no_proxy' env var was not supported under net/http.  Fixed.</li>
603     <li>Remove some ruby/1.8 dependent codes.  Should work fine under 1.6, too.</li>
604     <li>XSD::XSDString did not check its value space under $KCODE = 'NONE' env for example where iconv module is not installed.</li>
605     <li>XSD::XSDFloat, XSD::XSDDouble: add +/- sign explicitly when stringified and embedded into XML instance.  Ruby's sprintf may format -0.0 as "0.0" (no minus sign) depending on underlying C sprintf implementation.</li>
606   </ul></li>
607 </ul></dd>
608
609 <dt>1.5.0 - September 13, 2003</dt>
610 <dd>Thousands of lines are changed in this release
611 (*.rb in current SOAP4R distribution has 30kloc or over).
612 But the biggest change is coding convention, camelCase to non_camel_case.
613 Though I tried to keep compatibility between 1.5.0 and 1.4.8, but there's no
614 way to keep it at a few point.  If you'll find your code which was developed
615 for 1.4.8 does not run under 1.5.0, feel free to ask
616 <a href="mailto:nakahiro@sarion.co.jp">me</a> to solve the problem.
617 <ul>
618   <li>Dependency libraries;
619   <ul>
620     <li>Add net/http support.  Users can try sample SOAP clients without installing http-access2.  For actual usage, consider installing http-access2 for speed and thread-safe SOAP client.  CAUTION: Building SOAP CGI server needs http-access2 to be installed.</li>
621     <li>Soap4r standalone server requires webrick module to be installed instead of GServer.rb and httpserver.rb.</li>
622     <li>Supports iconv.  To use utf-8, you need to install iconv(included in ruby/1.8) or uconv.</li>
623     <li>Suspend NQXML XML parser support.</li>
624     <li>Remove REXML processor version check.  No longer needed.</li>
625     <li>Rewrite tests with test/unit.</li>
626   </ul></li>
627
628   <li>Features;
629   <ul>
630     <li>Efforts to support messaging with document/literal and ASP.NET interoperability.</li>
631     <li>Add document/literal messaging interface to wsdlDriver.rb.  See a very brief example in sample/soapbox/wsdlDriver.rb though I still didn't try to login to Jabber server..  Jabber folks?</li>
632     <li>XML pretty printing.</li>
633     <li>Better Ruby object mapping.  Rewrote RubytypeFactory to support more Ruby objects.  Tests in AMarshal(http://cvs.m17n.org/~akr/amarshal/) much helped it.  Thanks very much to Tanaka Akira-san.</li>
634     <li>SOAPMarshal accepts IO as an output device like Marshal#dump.</li>
635     <li>SOAPElement: constructor signature change.  Added extraattrs attribute.</li>
636     <li>XSDDateTimeImpl: to_time did not set usec.</li>
637     <li>StreamHandler: add reset method to shutdown a connection to a site.</li>
638   </ul></li>
639
640   <li>Others;
641   <ul>
642     <li>Simplify installer and remove uninstaller.  Saving inventory file in src dir could be the problem.</li>
643     <li>Class/Module architecture relocation.</li>
644     <li>Changing coding convention to fit with Ruby's.  Added lib/soap/compat.rb which defines compatibility definitions for 1.4.8.  lib/soap/compat.rb warns when the library is loaded.</li>
645     <li>Many warnings raised under 1.8, caused by illegal references like XSD::XSDInt in typeMap.rb.  Soap4r defined toplevel::XSDInt.  Define XSD* classes in XSD module and introduce it to toplevel.</li>
646   </ul></li>
647 </ul>
648 </dd>
649
650 <dt>1.4.8 - January 17, 2003</dt>
651 <dd>
652 This version has these enhancements and bug fixes;
653 <ul>
654   <li>Avoid warnings;
655   <ul>
656     <li>Use Object#class instead of Object#type.</li>
657     <li>Avoid implicit use a String as a regexp source.</li>
658   </ul></li>
659   <li>Add wsdlDriver which reads WSDL file and allow client to call procedures.  Here is an example to search Google.
660   <pre>
661     require 'soap/wsdlDriver'
662     searchWord = ARGV.shift
663     # You must get key from http://www.google.com/apis/ to use Google Web APIs.
664     key = File.open(File.expand_path("~/.google_key")).read.chomp
665     GOOGLE_WSDL = 'http://api.google.com/GoogleSearch.wsdl'
666     # Load WSDL and create driver.
667     google = SOAP::WSDLDriverFactory.new(GOOGLE_WSDL).createDriver
668     # Just invoke!
669     result = google.doGoogleSearch(key, searchWord, 0, 10, false, "", false, "", 'utf-8', 'utf-8')
670     result.resultElements.each do |ele|
671       puts "== #{ele.title}: #{ele.URL}"
672       puts ele.snippet
673       puts
674     end
675   </pre></li>
676   <li>WSDLDriver client examples of AmazonWebServices, RAA and RNN (Japanese Ruby blog site) are also included in sample/ dir.</li>
677   <li>Support xmlscan XML processor.</li>
678   <li>Changed XML processor detection scheme.  Search xmlscan, REXML, XMLParser and NQXML in this order.</li>
679   <li>Rewrite charset handling of XML processor.
680   <ul>
681     <li>If you only use us-ascii and utf-8, all XML processors should work without uconv module.</li>
682     <li>With xmlscan/0.2 or later, you can handle euc-jp or shift_jis encoded XML instance WITHOUT uconv module.</li>
683     <li>With other XML processors includes xmlscan/0.1, you need to install uconv module to handle euc-jp or shift_jis encoded XML instance.</li>
684   </ul></li>
685   <li>cgistub.rb: Overridable response mediatype.  There exists a http client which does not accept the mediatype text/xml which is specified in SOAP spec.  For example, an i-Mode (smart phone) client does not accept it...  You can set response mediatype to 'text/plain' for such client though it violates SOAP spec...</li>
686   <li>wsdl2ruby: Add --force option to override existing file.</li>
687   <li>Fixed many bugs.</li>
688 </ul></dd>
689
690 <dt>1.4.7 - September 20, 2002</dt>
691 <dd>
692 This version has these enhancements and bug fixes;
693 <ul>
694 <li>Includes WSDL4R initial release.
695 <ul>
696 <li>Bare in mind this is an alpha level code.
697 I wrote it halfway at half and a year ago,
698 and wrote the rest part in half and a day.
699 No comprehensive test, no strict syntax check, unfriendly error message, etc.
700 Try it if you want, and find bugs in it.</li>
701 <li>WSDL4R can run under XMLParser for now.
702 You might be able to let it run under NQXML/REXML if you know SAX
703 programming well.  How XML processor is used under WSDL4R
704 is as same as under SOAP4R.</li>
705 </ul></li>
706 <li>Added xsd:short support.</li>
707 <li>::Float(double precision float in Ruby) is mapped to xsd:double now.
708 It was mapped to xsd:float.</li>
709 <li>Fixed a bug of year &lt; 0 handling.  B.C. 1 =&gt; -0001 in XMLSchema.</li>
710 <li>Fixed a bug of exception serialization.  Custam mappingRegistry was not used.</li>
711 <li>Fixed a bug of regex for MediaType parsing.</li>
712 </ul>
713 </dd>
714
715 <dt>1.4.5 - May 25, 2002</dt>
716 <dd>
717 This version has these enhancements;
718 <ul>
719 <li>Supports all primitive datatypes of XML Schema Part2 Datatypes except NOTATION.
720 Added types are Duration, gYearMonth, anyURI, QName and so on.</li>
721 <li>Runs much faster than earlier versions.
722 Some performance check and tuning has been done.</li>
723 <li>Supports all Ruby objects marshalling/unmarshalling
724 except some special objects.  See below for more detail.</li>
725 </ul>
726
727 CAUTION: This version requires
728 <a href="http://raa.ruby-lang.org/list.rhtml?name=date2">[RAA:date2]</a> version 3.2 or later and
729 <a href="http://raa.ruby-lang.org/list.rhtml?name=http-access2">[RAA:http-access2]</a> version F.
730 Please make sure the versions you use.
731 <br/><br/>
732
733 Here is detail of change.
734 <dl>
735 <dt>Datatypes (XMLSchemaDatatypes.rb and baseData.rb)</dt>
736 <dd>
737 <ul>
738 <li>Added duration, gYearMonth, gYear, gMonthDay, gDay, gMonth, anyURI and QName datetypes.
739 All primitive datatypes in XML Schema Part 2 section 3.2 except NOTAION are supported now.</li>
740 <li>Modified XSDDataTime, XSDDate and XSDTime implementation.  These use a DataTime as a data holder.</li>
741 <li>Follow date/3.2: date2.rb -&gt; date.rb.</li>
742 <li>Changed to_s representations of single float and double float.  Thanks to gotoken.</li>
743 <li>XSDFloat: Add '0' if given str ends with 'E'.  Float( "-1.4E" ) might fail on some system.</li>
744 <li>Added SOAPRawString class.  Given string is embedded into XML instance directly.
745 You can use this class to embed (numeric) character references manually.</li>
746 <li>Fixed UTF8 regexp bug.  XSDString uses this regexp to check a given string.</li>
747 <li>Added UT for XMLSchemaDatatypes.rb.  See test/xsd_ut.rb and test/baseData_ut.rb.</li>
748 </ul></dd>
749
750 <dt>SOAP &lt;-&gt; Ruby object mapping (mappingRegistry.rb and rpcUtils.rb)</dt>
751 <dd>
752 <ul>
753 <li>Exception raised from server side could not be mapped to specific exception.  Fixed.</li>
754 <li>Refactoring to avoid *_eval.  Reduced warnings.</li>
755 <li>Added Range marshalling support.</li>
756 <li>Regexp#options support under ruby/1.6.</li>
757 <li>Supports cyclic Range such as;
758 <pre>
759   class Foo
760     attr_accessor :foo
761     def succ; end
762     def &lt;=&gt;( rhs ); end
763   end
764
765   o1 = Foo.new
766   o2 = Foo.new
767   r = o1..o2
768   o1.foo = r
769
770   p SOAPMarshal.load( SOAPMarshal.dump( r ))
771 </pre></li>
772 <li>Supports some instance variable of ruby standard class.
773 But instance variable of Array, Hash, String, Float and Bignum are not supported because of restriction of SOAP encoding format...</li>
774 <li>Alias ::SOAPMarshal to ::SOAP::Marshal.</li>
775 <li>Added Marshal.load and Marshal.dump as aliases to Marshal.unmarshal and
776   Marshal.unmarshal.</li>
777 </ul></dd>
778
779 <dt>misc</dt>
780 <dd>
781 <ul>
782 <li>Dumps what parser is used when $DEBUG.  Try 'ruby -d -rsoap/processor -e 0'</li>
783 <li>Added CGI samples in sample/.</li>
784 <li>Some performance check and tuning has been done on both client and server side.
785 One bottle neck is Kernel.methods which SOAP4R use(d) while mapping SOAP Data Model &lt;-&gt; Ruby object.
786 I replaced it with Object.respond_to? .
787 Another bottle neck of client side is delegate.rb which is used by http-access2.
788 Get <a href="http://raa.ruby-lang.org/list.rhtml?name=http-access2">[RAA:http-access2]</a> version F.
789 </ul>
790 </dd>
791 </dl>
792 </dd>
793
794 <dt>1.4.4 - May 6, 2002</dt>
795 <dd>
796 This is a bug fix release.
797 Following users should update.
798 <ul>
799 <li>Users who use DateTime datatype.</li>
800 <li>Developers of SOAP client/server which works under multi-thread condition.</li>
801 <li>REXML users.</li>
802 </ul>
803 Fixed bugs.
804 <ul>
805 <li>XSDDataTime: Changed variable name usec to sec_frac.  It's not a micro sec so name usec is misleading.</li>
806 <li>XSDTime: Fixed bugs in usec part.</li>
807 <li>date.rb in standard library and date2 version 3 conflicts because date2.rb is a successor of date.rb and not designed for dual use.
808 (ex. using a module which requires date.rb like DBI and another module which requires date2.rb).
809 Added a workaround for this.</li>
810 <li>SOAP::Processor was not MT-safe.  Fixed.
811 Projected feature regards to MT are follows.
812 At least I hope so.  Tell me if you find these wrong.
813 <ul>
814 <li>Driver: safe</li>
815 <li>Proxy: safe</li>
816 <li>Server: safe</li>
817 <li>CGIStub: safe</li>
818 <li>StandaloneServer: safe</li>
819 <li>RPCRouter: safe</li>
820 <li>StreamHandler: safe</li>
821 <li>Processor: safe</li>
822 <li>SOAPParser: unsafe</li>
823 <li>SOAPGenerator: unsafe</li>
824 <li>EncodingStyleHandler: unsafe</li>
825 </ul>
826 </li>
827 <li>SOAP4R/1.4.3 supports REXML/2.1.3 but it did not detect REXML processor automatically.</li>
828 </ul>
829 </dd>
830
831 <dt>1.4.3 - April 11, 2002</dt>
832
833 <dd>
834 <dl>
835 <dt>Attention to 1.4.2 or earlier users;</dt>
836 <dd>
837 <ul>
838 <li>Stopped redistributing packages in RAA from this release.
839 Please get <a href="#dependencies">required</a> packages from
840 <a href="http://raa.ruby-lang.org">RAA</a>
841 and install it.</li>
842 <li>It still does NOT support WSDL!</li>
843 </ul>
844 </dd>
845
846 <dt>New features</dt>
847 <dd>
848 <ul>
849 <li>Added REXML parser support.</li>
850 <li>Added uninstaller.</li>
851 <li>Re: samples
852 <ul>
853 <li>Added 3 new samples, Calc, Exchange, and SampleStruct.</li>
854 <li>Use environment variable HTTP_PROXY or http_proxy for http proxy.</li>
855 <li>Removed unreachable services.</li>
856 <li>RAA: Separate iRAA.rb into RAA.rb and iRAA.rb.</li>
857 <li>Added description about <a href="#samples">samples</a> to RELEASE_en.html.</li>
858 </ul>
859 <li>Changed String encoding handling among
860 Ruby object &lt;-&gt; SOAP Data Model &lt;-&gt; XML instance.
861 <ul>
862 <li>Ruby object: $KCODE.</li>
863 <li>SOAP Data Model: utf-8 if uconv module is installed, $KCODE if not.</li>
864 <li>XML instance: Client side use utf-8 if uconv module is installed,
865 $KCODE if not.  Server side try to adjust the request encoding.</li>
866 <li>Use regexp instead of NKF.guess to check if the given String is EUC/SJIS or not.</li>
867 </ul>
868 </li>
869 <li>Added 'addServant' interface to server side.  See sample/Calc/server.rb.</li>
870 <li>Added 'addMethodAs' interface to both server side and client side.
871 See sample/Calc/server2.rb.</li>
872 </ul>
873 </dd>
874
875 <dt>Changes</dt>
876 <dd>
877 <ul>
878 <li>Removed Japanese document.
879 I was tired of maintaining 2 separated documents.
880 Though my English is poor as you see, numbers of readers of my English document
881 should be more than one of my Japanese document.
882 Would you please tell me bug of my English composition and of course in the code?</li>
883 <li>Use
884 <a href="http://raa.ruby-lang.org/list.rhtml?name=devel-logger">[RAA:devel-logger]</a>
885 instead of
886 <a href="http://raa.ruby-lang.org/list.rhtml?name=application">[RAA:application]</a>.
887 </li>
888 <li>Avoided using exception in soap2obj and reduced warnings in runtime.</li>
889 <li>XSDDateTime: Use date2 version 3 instead of date3.rb.
890 Date2 version 3 will be included in standard distribution of Ruby/1.8.</li>
891 <li>XSDDateTime: Added XSDDateTimeToTime module to extract a Time object from XSDDateTime, XSDDate and XSDTime.</li>
892 </ul>
893 </dd>
894
895 <dt>Bug fixes</dt>
896 <dd>
897 <ul>
898 <li>Set 'charset=' to content-type when sending back a SOAPFault.
899 It was not set.</li>
900 <li>XSDDateTime: Parsedate was not used.  Removed.</li>
901 <li>Added constant Log as a canonical name of Devel::Logger for backward
902 compatibility of devel-logger.</li>
903 <li>Foo = Struct.new(:foo) and Foo = Struct.new("Foo", :foo) could not be
904   unmarshalled collectly.  All members were unmarshalled as nil.  Fixed.</li>
905 <li>Rescue ArgumentError(Unrecognized signal) in standaloneServer.rb for mswin32 ruby.</li>
906 </ul>
907 </dd>
908 </dl>
909 </dd>
910
911 <dt>1.4.2 - December 28, 2001</dt>
912 <dd>
913 Many changes around Ruby language mapping for SOAP.
914 I replaced DRb's marshalling format with SOAP marshalling and it passed
915 about all unit test packed in DRb package.
916 Only test failed was regards to packet size.
917 You might be able to use SOAP::Marshal.(un|)marshal for serializing objects
918 instead of Marshal.(load|dump).
919
920 <ul>
921 <li>Illegal decoding of a position-less element after position-ed element.  Fixed.</li>
922 <li>Add Rubytype encoding/decoding support: Regexp, Class, Module and Symbol.</li>
923 <li>Added an option of MappingRegistry to raise an exception when unknown Struct.
924 The option is set 'false' by default so that same behaviour as before.</li>
925 </ul></dd>
926
927 <dt>1.4.1 - December 7, 2001</dt>
928 <dd>SOAP4R/1.4 contained many bugs (as usual...)
929 1.4.1 is a maintenance release.  Some bugs are fixed.
930 Thanks to Michael Neumann.
931
932 <ul>
933 <li>instance_eval in SOAPStruct#add for adding accessor illegaly overrode important methods for SOAP4R such as name, name= and so on.  Removed this instance_eval and rewrote other codes which did depend the code.  Thanks to MNeumann for reporting it and giving a suggestion to fix it.</li>
934 <li>Fixed charset handling.  Illegal charset was set when automatic XML processor detecting.</li>
935 <li>Removed unused code(self.decode) in element.rb.</li>
936 <li>Illegal constant access when SOAP format error.  Fixed.</li>
937 <li>LiteralEncodingNamespace moved to SOAP module.</li>
938 </ul></dd>
939
940
941 <dt>1.4 - December 5, 2001</dt>
942 <dd><ul>
943 <li>Datatypes:
944 <ul>
945 <li>XSDFloat: Bug in rounding double float to single float.  Fixed.</li>
946 <li>SOAPElement: Added for literal encoding.</li>
947 <li>Removed SOAP encoding functions from baseData.  EncondingStyleHandler should decide how to encode SOAP data model. (ie. ASP.NET seems to have its own encoding style.)</li>
948 <li>SOAPHeaderItem: Changed interface for easy use.</li>
949 </ul></li>
950
951 <li>SOAP Encoding:
952 <ul>
953 <li>Encoding by itself, not using NQXML's tree object model.</li>
954 <li>At last, supported multi-ref encoding!</li>
955 <li>marshal.rb: Marshalling with Envelope and Body.  To marshal multi-ref'd object, Body is needed. CAUTION: Not compatible between former implementation.</li>
956 <li>Add EncodingStyleHandlerLiteral and set it to default.</li>
957 <li>Renamed encoding.rb to encodingStyleHandler.rb.</li>
958 <li>Added ASP.NET encoding handler.  ASP.NET seems to use literal encoding (by default) but it is easier with this encodingStyleHandler to access the service which is built with ASP.NET.</li>
959 <li>Changed element name escape.
960 <ul>
961 <li>:: &lt;=&gt; \.\.</li>
962 <li>[^a-zA-Z0-9_-] &lt;=&gt; \.[0-F][0-F]
963 </ul>
964 Limitation: Using SOAP4R's RPC function, you cannot use the name which contains '.' for method name, class/struct name, and accessor name. In Ruby world, it should not be a problem I believe.</li>
965 </ul></li>
966
967 <li>RPC related functions:
968 <ul>
969 <li>Driver: Added 'invoke' method for messaging.</li>
970 <li>Driver: Content of SOAPFault detail element is set in the exception which is thrown from SOAP Node to client application.</li>
971 <li>Processor: Changed Processor.(un|)marshal interface.  An instance of NS for parsing/generating XML instance is prepared in parser/generator.</li>
972 <li>mappingRegistry.rb is devided from rpcUtils.rb.</li>
973 </ul></li>
974 </ul></dd>
975
976
977 <dt>1.3.8 - October 4, 2001</dt>
978 <dd>Feedback from
979 <a href="http://www.whitemesa.com/interop.htm">SOAPBuilders Interoperability Lab &quot;Round 2&quot;</a>
980 and Michael Neumann.  Thanks!
981
982 <ul>
983 <li>Datatypes:
984 <ul>
985 <li>XSDFloat: Creating float data from junk string such as "123.0junk" was
986   converted to 0.0.  It should be avoided.  Fixed.</li>
987 <li>XSDFloat: Fixed double -&gt; single rounding code.</li>
988 </ul></li>
989
990 <li>RPC related functions:
991 <ul>
992 <li>Changed typename <=> NCName strategy.  '::' &lt;=&gt; '.'</li>
993 <li>Added mappingRegistry argument to interfaces for SOAP object creation.</li>
994 </ul></li>
995
996 <li>Others:
997 <ul>
998 <li>Set faultstring '(No faultstring)' to SOAP Fault when empty faultstring element.</li>
999 <li>server.rb: Added mappingRegistry interface.</li>
1000 <li>marshal.rb: Create NCName from typename.</li>
1001 </ul></li>
1002 </ul></dd>
1003
1004
1005 <dt>1.3.7 - August 24, 2001</dt>
1006 <dd>Feedback from
1007 <a href="http://www.whitemesa.com/interop.htm">SOAPBuilders Interoperability Lab &quot;Round 2&quot;</a>
1008 and Michael Neumann.  Thanks!
1009
1010 <ul>
1011 <li>Datatypes:
1012 <ul>
1013 <li>All datatypes try to keep nil correctly.</li>
1014 <li>XSDInt/Integer/Long: to_i -&gt; Integer() to detect format error.</li>
1015 <li>XSDDateTime, XSDDate, XSDTime: Add trailing 'Z' to indicate UTC.</li>
1016 <li>SOAPStruct: Accept untyped struct.</li>
1017 <li>Map(Hash): Let &lt;item&gt; untyped.</li>
1018 <li>Apache allows only 'item' in Map type.</li>
1019 </ul></li>
1020
1021 <li>Stream handler:
1022 <ul>
1023 <li>Removed MPOST support.</li>
1024 <li>ECONNRESET was not caught.  Fixed.</li>
1025 <li>Added timeout support.</li>
1026 </ul></li>
1027
1028 <li>Others:
1029 <ul>
1030 <li>Changed using URI library: URb -&gt; URI; following its name change.</li>
1031 <li>Added NQXML/1.1.0 support.  A XMLDecl now recognized as a XMLDecl, not a PI.</li>
1032 </ul></li>
1033 </ul></dd>
1034
1035 <dt>1.3.6 - July 27, 2001</dt>
1036 <dd>Many feedbacks from Michael Neumann.  Thanks!
1037
1038 <ul>
1039 <li>hexBinary type: Added.</li>
1040 <li>nil type: Should not be xsd:nil but xsi:nil.</li>
1041 <li>Added StandaloneServer implementation.  Thanks to Michael Neumann!</li>
1042 <li>Illegal parsing of XMLDecl.  Fixed.</li>
1043 <li>RPC's 'inout' param was not supported.  Fixed.  Thanks to Michael Neumann!</li>
1044 <li>URb::Generic#path returns '' when abs_path is empty (such as http://foo).
1045 Added checking code.</li>
1046 <li>Use http-access2 instead of original HTTP implementation.  http-access2 supports HTTP/1.1's persistent connection.</li>
1047 </ul></dd>
1048
1049 <dt>1.3.5 - July 14, 2001</dt>
1050 <dd>Many feedbacks from Michael Neumann.
1051 I much appreciate valuable comments to him.
1052 Thanks!
1053
1054 <ul>
1055 <li>Changed using URI library: uri -&gt; URb.</li>
1056 <li>Types changed:
1057   <ul>
1058     <li>All: Triming data except XSDString before parsing it.</li>
1059     <li>String: Regexp for XML Char check did not work under $KCODE = 'UTF8' condition.  Fixed.</li>
1060     <li>Nil: 2001xsd:nil must not accept a value '1'.  1999xsd:null must not accept a value 'true' because these are not a boolean but only a flag for nil.  Fixed.</li>
1061   </ul>
1062 </li>
1063
1064 <li>Supported XML parser:
1065   <ul>
1066     <li>Added automatic CES conversion support for NQXMLParser.
1067         (Depends on uconv module).
1068         Set $KCODE for regexps used in NQXML parser.</li>
1069     <li>Moved SOAPNQXML*Parser to nqxmlparser.rb.</li>
1070   </ul>
1071 </li>
1072
1073 <li>RPC related functions changed:</li>
1074   <ul>
1075     <li>Added marshalling/unmarshalling Ruby's object using SOAP Encoding.</li>
1076     <li>Parallelize of signatures of 'addMethod': proxy.rb &lt;-&gt; rpcRouter.rb, driver.rb &lt;-&gt; cgistub.rb.</li>
1077     <li>Void return if 'retval' is not defined.</li>
1078     <li>Added SOAP's Long type to default mapping table.</li>
1079   </ul>
1080 </li>
1081 </ul></dd>
1082
1083 <dt>1.3.4.2 - July 11, 2001</dt>
1084 <dd>SOAP4R/1.3.4 was once packed in July 10, 2001.
1085 But, thanks to MNeumann and knu,
1086 I found I had forgotten to pack 'redist' directory with it.
1087 I added some fix from developing version and repack it as 1.3.4.2.
1088 Sorry for frequently release...
1089 <br/><br/>
1090
1091 Feedback from
1092 <a href="http://www.xmethods.net/ilab/">`SOAPBuilders Interoperability Lab.'</a>
1093 and Michael Neumann.  Thanks!
1094
1095 <ul>
1096 <li>Added in 1.3.4.2:
1097   <ul>
1098     <li>Type Decimal: Silly bug fixed.  0.0001 was converted to 0.1</li>
1099     <li>CGIStub returns HTTP status 500 when returning SOAP Fault.
1100         Returned 200 because I don't like this spec., but SOAP/1.2 W3C WD
1101         9 July 2001 have adopted it.  Hmm...</li>
1102     <li>RPC client(driver.rb): Exception#set_backtrace was omitted when transmitting exception by SOAP Fault.</li>
1103   </ul>
1104 </li>
1105 <li>Types changed:
1106   <ul>
1107     <li>Array: Incomplete sparse array support.  Fixed.</li>
1108     <li>Date: Added.</li>
1109     <li>Time: Added.</li>
1110     <li>DateTime: Added precision of time support.</li>
1111     <li>String: Default data should not be nil but ''.</li>
1112     <li>Nil: Attribute value of xsi:nil might be '1' instead of 'true'.  Fixed.</li>
1113   </ul>
1114 </li>
1115
1116 <li>Supported XML parser:
1117   <ul>
1118     <li>Added SOAPXMLParser and SOAPSAXDriver for XMLParser which uses expat.
1119         You can get the module from RAA: <a href="http://raa.ruby-lang.org/list.rhtml?name=xmlparser">XMLParser module</a>.<br/>
1120         To use XMLParser -&gt; add &quot;require 'soap/xmlparser'&quot;.<br/>
1121         To use SAX driver of XMLParser -&gt; add &quot;require 'soap/saxdriver'&quot;.<br/>
1122         To use NQXMLParser -&gt; nothing to do.<br/>
1123         FYI:
1124         <ul>
1125           <li>XMLParser version is faster than others</li>
1126           <li>SAXDriver version is extremely slow</li>
1127           <li>NQXMLParser version is somewhat slower than XMLParser version</li>
1128           <li>XMLParser is a Ruby extension module; To use it, you must compile and install it.</li>
1129           <li>So far, automatic code conversion support is for XMLParser and SAXDriver.  See below.</li>
1130         </ul>
1131     </li>
1132     <li>Added automatic CES conversion support: UTF-8 &lt;-&gt; EUC, SJIS.
1133         Requires Uconv module.  Works wit