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

Changeset 1549

Show
Ignore:
Timestamp:
05/17/05 23:02:29 (4 years ago)
Author:
nahi
Message:

Release note for 1.5.4. closes #94.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/RELEASE_en.html

    r1520 r1549  
    1919 
    2020<p class="status"> 
    21 Last modified: December 25, 2003<br /> 
     21Last modified: May 17, 2005<br /> 
    2222Created: July 17, 2000 
    2323</p> 
     
    3434 
    3535<p> 
    36 Target SOAP4R version: SOAP4R/1.5.2 
     36Target SOAP4R version: SOAP4R/1.5.4 
    3737</p> 
    3838 
     
    5454 
    5555<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; some experimental code, application program (bin/wsdl2ruby) and some test 
    60 codes.  Consider to get this package if, 
    61 </p> 
    62  
    63 <ul> 
    64   <li>You want to use soap4r under ruby/1.6</li> 
    65   <li>You need to do SOAP Messages with Attachments (SwA)</li> 
    66   <li>You need the WSDL to ruby (reads a WSDL file and generates stubs and Ruby class definitions) application</li> 
    67 </ul> 
     56This is version 1.5.4. 
     57Version 1.5.3 is the module which is included in ruby-1.8.2, 
     58and not released independently. 
     59Following changes consist from 2 parts; Changes from 1.5.3 to 1.5.4, 
     60and from 1.5.2 to 1.5.3. 
     61</p> 
    6862 
    6963<p> 
    70 Changes from 1.5.1.2. 
    71 </p> 
    72  
     64Changes in 1.5.4 from 1.5.3 
     65</p> 
     66 
     67<ul> 
     68  <li>SOAP client and server 
     69    <ul> 
     70      <li>for both client side and server side 
     71        <ul> 
     72          <li>improved document/literal service support.  style(rpc, document)/use(encoding, literal) combination are all supported.  for the detail about combination, see test/soap/test_style.rb.</li> 
     73          <li>let WSDLEncodedRegistry#soap2obj map SOAP/OM to Ruby according to WSDL as well as obj2soap.</li> 
     74          <li>let SOAP::Mapping::Object handle XML attribute for doc/lit service.  you can set/get XML attribute via accessor methods which as a name 'xmlattr_' prefixed (&lt;foo name="bar"/&gt; -&gt; Foo#xmlattr_name).</li> 
     75        </ul> 
     76      </li> 
     77      <li>client side 
     78        <ul> 
     79          <li>WSDLDriver capitalized name operation bug fixed.  from 1.5.3-ruby1.8.2, operation which has capitalized name (such as KeywordSearchRequest in AWS) is defined as a method having uncapitalized name. (converted with GenSupport.safemethodname to handle operation name 'foo-bar').  it introduced serious incompatibility; in the past, it was defined as a capitalized.  define capitalized method as well under that circumstance.</li> 
     80          <li>added new factory interface 'WSDLDriverFactory#create_rpc_driver' to create RPC::Driver, not WSDLDriver (RPC::Driver and WSDLDriver are merged).  'WSDLDriverFactory#create_driver' still creates WSDLDriver for compatibility but it warns that the method is deprecated.  please use create_rpc_driver instead of create_driver.</li> 
     81          <li>allow to use an URI object as an endpoint_url even with net/http, not http-access2.</li> 
     82        </ul> 
     83      </li> 
     84      <li>server side 
     85        <ul> 
     86          <li>added mod_ruby support to SOAP::CGIStub.  rename a CGI script server.cgi to server.rb and let mod_ruby's RubyHandler handles the script.  CGIStub detects if it's running under mod_ruby environment or not.</li> 
     87          <li>added fcgi support to SOAP::CGIStub.  see the sample at sample/soap/calc/server.fcgi.  (almost same as server.cgi but has fcgi handler at the bottom.)</li> 
     88          <li>allow to return a SOAPFault object to respond customized SOAP fault.</li> 
     89          <li>added the interface 'generate_explicit_type' for server side (CGIStub, HTTPServer).  call 'self.generate_explicit_type = true' if you want to return simplified XML even if it's rpc/encoded service.</li> 
     90        </ul> 
     91      </li> 
     92    </ul> 
     93  </li> 
     94 
     95  <li>WSDL 
     96    <ul> 
     97      <li>WSDL definition 
     98        <ul> 
     99          <li>improved XML Schema support such as extension, restriction, simpleType, complexType + simpleContent, ref, length, import, include.</li> 
     100          <li>reduced "unknown element/attribute" warnings (warn only 1 time for each QName).</li> 
     101          <li>importing XSD file at schemaLocation with xsd:import.</li> 
     102        </ul> 
     103      </li> 
     104      <li>code generation from WSDL 
     105        <ul> 
     106          <li>generator crashed when there's '-' in defined element/attribute name.</li> 
     107          <li>added ApacheMap WSDL definition.</li> 
     108        </ul> 
     109      </li> 
     110    </ul> 
     111  </li> 
     112 
     113  <li>Samples 
     114    <ul> 
     115      <li>added XML &lt;-&gt; Ruby mapping utility.  XSD::Mapping#xml2obj maps an XML to a tree of SOAP::Mapping::Object.  XSD::Mapping#obj2xml is for reverse direction conversion.  see a sample in sample/wsdl/noaa/client.rb</li> 
     116      <li>added a sample for weather.gov's NDFD services.</li> 
     117      <li>add a sample of googleAdWords.  CAUTION: I don't have an account of AdWords so the sample code is NOT tested.  Please tell me (nahi@ruby-lang.org) if you will get good/bad result in communicating with AdWords Server.</li> 
     118      <li>add a sample of AWSECommerce.  CAUTION: I don't have an account of AWSECommerce so the sample code is NOT tested.  Please tell me (nahi@ruby-lang.org) if you will get good/bad result in communicating with AWSECommerce Server.</li> 
     119    </ul> 
     120  </li> 
     121</ul> 
     122 
     123<p> 
     124Changes in 1.5.3 from 1.5.2 
     125</p> 
     126 
     127<ul> 
     128  <li>SOAP client and server 
     129    <ul> 
     130      <li>for both client side and server side 
     131        <ul> 
     132          <li>added a header handler class for simple SOAPHeader handling.  see samples in sample/soap/authheader/*.</li> 
     133          <li>SSL support (both client side and server side).  check sample/soap/ssl/*</li> 
     134          <li>gzipped content encoding support.  see sample/soap/helloworld/hw_{c,s}_gzip.rb.</li> 
     135        </ul> 
     136      </li> 
     137      <li>client side 
     138        <ul> 
     139          <li>HTTP-Cookies support under soap4r + http-access2.  not supported under soap4r + net/http.</li> 
     140          <li>added a method (SOAP::RPC::Driver#test_loopback_response) for loopback test with the specified response.</li> 
     141          <li>added SOAP::RPC::Driver#loadproperty interface to load property file.</li> 
     142          <li>let SOAP::RPC::Driver#add_method returns Method object.  you can invoke a service like; drv.add_method(&#34;hello&#34;).call(&#34;world&#34;)</li> 
     143          <li>added http options to get/set timeout seconds. 
     144            <ul> 
     145              <li>for http-access2: 
     146                <ul> 
     147                  <li>driver.options[&#34;protocol.http.connect_timeout&#34;]</li> 
     148                  <li>driver.options[&#34;protocol.http.send_timeout&#34;]</li> 
     149                  <li>driver.options[&#34;protocol.http.receive_timeout&#34;]</li> 
     150                </ul> 
     151              </li> 
     152              <li>for net/http: 
     153                <ul> 
     154                  <li>driver.options[&#34;protocol.http.connect_timeout&#34;]</li> 
     155                  <li>driver.options[&#34;protocol.http.receive_timeout&#34;]</li> 
     156                </ul> 
     157              </li> 
     158            </ul> 
     159          </li> 
     160          <li>raise NotImplementedError when net/http + basic_auth.</li> 
     161        </ul> 
     162      </li> 
     163      <li>server side 
     164        <ul> 
     165          <li>introduced the new server class SOAP::RPC::HTTPServer which takes WEBrick's HTTPServer compatible config parameter.</li> 
     166          <li>added a debug log of SOAP request/response.</li> 
     167        </ul> 
     168      </li> 
     169    </ul> 
     170  </li> 
     171 
     172  <li>SOAP core part 
     173    <ul> 
     174      <li>added XMLSchema derived type support; byte, nonPositiveInteger, negativeInteger, nonNegativeInteger, positiveInteger, unsignedLong, unsignedInt, unsignedShort, unsignedByte.</li> 
     175      <li>'eval' cleanup.  I hope it allows soap4r to work under mod_ruby environment.</li> 
     176      <li>SOAPProperty raise RuntimeError under ruby-1.9 when accessing locked property.  still raises TypeError under ruby-1.8 or earlier.  the change is from ruby's behaviour change about an exception when accessing a frozen object.</li> 
     177      <li>make SOAPHeader a child of SOAPStruct, not SOAPArray.</li> 
     178      <li>SOAPProperty does not eval whole string.  \\, \t, \r, \n, \f escaping chars are supported like Java's Properties.</li> 
     179      <li>URI object was not mapped correctly so that URI object was not interoperable under some situation.  fixed.</li> 
     180      <li>SOAP::Mapping::Object: handle multiple value as an array. 
     181<pre> 
     182&lt;foo&gt; 
     183  &lt;bar&gt;1&lt;/bar&gt; 
     184  &lt;bar&gt;2&lt;/bar&gt; 
     185  &lt;bar&gt;3&lt;/bar&gt; 
     186  &lt;baz&gt;4&lt;/baz&gt; 
     187&lt;/foo&gt; 
     188  -&gt; 
     189foo.bar =&gt; [1, 2, 3] 
     190foo.baz =&gt; 4 
     191</pre> 
     192      </li> 
     193      <li>raise an exception while dumping singleton class. [ruby-dev:22588] 
     194<pre> 
     195e.g. c = class &lt;&lt; Object.new 
     196       class C; self; end 
     197     end 
     198     SOAPMarshal.dump(c) 
     199</pre> 
     200      </li> 
     201    </ul> 
     202  </li> 
     203 
     204  <li>WSDL 
     205    <ul> 
     206      <li>WSDL definition 
     207        <ul> 
     208          <li>added &lt;xsd:simpleContent&gt; support.</li> 
     209          <li>initial (means &#34;far from complete&#34;) simpleType support.</li> 
     210          <li>support parts attribute of soap:body element.</li> 
     211          <li>xmlSchema's 'any' element support; for parsing, just treat the element as an element which has a name 'any'.</li> 
     212          <li>add mustUnderstand attribute support.</li> 
     213          <li>a special well-known type: ApacheMap support.</li> 
     214        </ul> 
     215      </li> 
     216 
     217      <li>code generation from WSDL 
     218        <ul> 
     219          <li>added simple code generation utils (lib/xsd/codegen)</li> 
     220          <li>dump attribute definition in XMLSchema as 'attr_*' attribute. [experimental]</li> 
     221          <li>wsdl2ruby.rb: add document/literal service support.  see sample/wsdl/documentliteral/*</li> 
     222          <li>untyped element should be treated as xsd:anyType.</li> 
     223          <li>added a tool xsd2ruby.rb for generating classdef from xsd file.</li> 
     224        </ul> 
     225      </li> 
     226    </ul> 
     227  </li> 
     228 
     229  <li>Samples 
     230    <ul> 
     231      <li>added RAA/2.4 sample client</li> 
     232      <li>added sample for Application/Request scope use.  Session scope (with Cookies) feature is not yet exists.</li> 
     233    </ul> 
     234  </li> 
     235</ul> 
     236 
     237<p> 
     238For details, see ChangeLog. 
     239</p> 
     240 
     241<p> 
     242Thanks to all of soap4r ML members and soap4r users for their support. 
     243</p> 
     244 
     245<h2 id="install" name="install"><span class="content">2. Install</span></h2> 
     246 
     247<p> 
     248At first, see <a href="#dependencies">Dependencies</a> section. 
     249You may need to install some extra packages. 
     250Next, get the archived file of SOAP4R and extract it, then simply try; 
     251</p> 
     252<pre class="path"> 
     253$ ruby install.rb 
     254</pre> 
     255 
     256<p> 
     257Necessary files will be installed to suitable directory. 
     258</p> 
     259 
     260<p> 
     261Files and directories in lib directory are SOAP4R library program itself. 
     262</p> 
     263 
     264<dl> 
     265<dt class="path">lib/</dt> 
     266<dd>Libraries.</dd> 
     267 
     268<dt class="path">sample/</dt> 
     269<dd>SOAP4R samples. 
     270See <a href="#samples">Samples</a> section.</dd> 
     271 
     272<dt class="path">test/</dt> 
     273<dd>Tests.  It also contains useful sample scripts for servers and clients. 
     274<br/> 
     275test/interopR2/ directory includes Clients/Server for 
     276<a href="http://www.xmethods.net/ilab/">`SOAPBuilders Interoperability Lab.'</a> 
     277Followings are advanced examples to use complex type transmit, 
     278sending base64 encoded string, multi-dimensional array, and so on. 
     279<ul> 
     280<li>test/interopR2/server.rb is a RPC Server side implementation.</li> 
     281<li>test/interopR2/client.rb is a RPC Client side implementation.</li> 
     282<li>test/interopR2/base.rb includes common definitions for client/server.</li> 
     283</ul> 
     284</dd> 
     285</dl> 
     286 
     287<h2 id="uninstall" name="uninstall"><span class="content">3. Uninstall</span></h2> 
     288 
     289<p> 
     290Simply delete installed files. 
     291</p> 
     292 
     293<h2 id="whats" name="whats"><span class="content">4. What is SOAP4R?</span></h2> 
     294 
     295<p> 
     296'SOAP4R' is an implementation of 
     297<a href="http://www.w3.org/TR/SOAP/">Simple Object Access Protocol (SOAP) 1.1 (W3C Note)</a>. 
     298</p> 
     299 
     300<p> 
     301Comments, information such as interoperability between SOAP4R and another implementation are welcomed. 
     302Feel free sending mail to 
     303<a href="mailto:nakahiro@sarion.co.jp" class="path">nakahiro@sarion.co.jp</a>. 
     304</p> 
     305 
     306<h2 id="dependencies" name="dependencies"><span class="content">5. Dependencies</span></h2> 
     307 
     308<p> 
     309SOAP4R is written in <a href="http://www.ruby-lang.org">Ruby</a> and 
     310aims to use with Ruby application. 
     311You have to install Ruby itself. 
     312Ruby/1.6 series or later is required. 
     313</p> 
     314<ul> 
     315  <li>ruby-1.8.2</li> 
     316  <li>ruby-1.8.1</li> 
     317  <li>ruby-1.6.8</li> 
     318  <li>developing version of ruby-1.9.x at Ruby's CVS repository(HEAD)</li> 
     319  <li>developing version of ruby-1.8.x at Ruby's CVS repository(ruby_1_8)</li> 
     320</ul> 
     321 
     322<p> 
     323SOAP4R depends on following Ruby modules in 
     324<a href="http://raa.ruby-lang.org">RAA</a>. 
     325You also have to install these modules to use SOAP4R. 
     326</p> 
     327 
     328<h3>for ruby-1.8.2, ruby-1.8.1, developing versions of ruby-1.9.x and ruby-1.8.x</h3> 
     329 
     330<dl> 
     331<dt class="path"><a href="http://raa.ruby-lang.org/project/http-access2/">[RAA:http-access2]</a> (2.0.5) (required for SSL)</dt> 
     332<dd>Yet another HTTP client implementation by NaHi. 
     333It's not required when you don't use SSL, but it's recommended to use. 
     334The author always runs and checks soap4r with http-access2.</dd> 
     335 
     336<dt class="path"><a href="http://raa.ruby-lang.org/project/uconv/">[RAA:uconv]</a> (0.4.10) (not required but needed if your Ruby doesn't have iconv module and you need UTF-8 encoded Japanese chars)</dt> 
     337<dd>by Yoshida Masato. 
     338It is requred when you want automatic CES conversion between 
     339SJIS &lt;-&gt; UTF8 and EUC &lt;-&gt; UTF8. 
     340Note: SJIS &lt;-&gt; EUC uses NKF module which is in standard distribution. 
     341</dd> 
     342 
     343</dl> 
     344 
     345<h3>for ruby-1.6.8</h3> 
     346 
     347<dl> 
     348<dt class="path">XML processor</dt> 
     349<dd>SOAP4R requires a XML processor package installed. 
     350For now, one of following XML processor must be installed 
     351(SOAP4R automatically detects it in runtime). 
     352<ul> 
     353<li><a href="http://raa.ruby-lang.org/project/xmlscan/">[RAA:xmlscan]</a> (0.2.3, 0.3.x)</li> 
     354<li><a href="http://raa.ruby-lang.org/project/rexml/">[RAA:REXML]</a> (2.7.1)</li> 
     355<li><a href="http://raa.ruby-lang.org/project/rexml-stable/">[RAA:REXML-stable]</a> (2.4.8)</li> 
     356<li><a href="http://raa.ruby-lang.org/project/xmlparser/">[RAA:XMLParser]</a> (0.6.5)</li> 
     357</ul></dd> 
     358 
     359<dt class="path"><a href="http://raa.ruby-lang.org/project/webrick/">[RAA:webrick]</a> (1.3.1)</dt> 
     360<dd>TCP server toolkit by Gotoyuzo.</dd> 
     361 
     362<dt class="path"><a href="http://raa.ruby-lang.org/project/http-access2/">[RAA:http-access2]</a> (2.0.5)</dt> 
     363<dd>Yet another HTTP client implementation by NaHi.</dd> 
     364 
     365<dt class="path"><a href="http://raa.ruby-lang.org/project/devel-logger/">[RAA:devel-logger]</a> (1.1.0)</dt> 
     366<dd>Logging utility by NaHi.</dd> 
     367 
     368<dt class="path"><a href="http://raa.ruby-lang.org/project/date2/">[RAA:date2]</a> (3.2)</dt> 
     369<dd>Date and DateTime implementation by Todayoshi Funaba.</dd> 
     370 
     371<dt class="path"><a href="http://raa.ruby-lang.org/project/uconv/">[RAA:uconv]</a> (0.4.10) (required for UTF-8 handling)</dt> 
     372<dd>by Yoshida Masato. 
     373It is requred when you want automatic CES conversion between 
     374SJIS &lt;-&gt; UTF8 and EUC &lt;-&gt; UTF8. 
     375Note: SJIS &lt;-&gt; EUC uses NKF module which is in standard distribution. 
     376</dd> 
     377 
     378</dl> 
     379 
     380<h2 id="samples" name="samples"><span class="content">6. Samples</span></h2> 
     381 
     382<p> 
     383Samples are in sample/ directory of distribution. 
     384Some samples try to connect to public servers. 
     385Set environment variable SOAP_USE_PROXY and HTTP_PROXY if you are in a firewall and you have 
     386http proxy to the internet like; 
     387</p> 
     388<pre class="path"> 
     389$ export SOAP_USE_PROXY=on 
     390$ export HTTP_PROXY=http://myproxyserver:8080 
     391  or 
     392$ setenv SOAP_USE_PROXY on 
     393$ setenv HTTP_PROXY http://myproxyserver:8080 
     394</pre> 
     395 
     396<dl> 
     397  <dt class="path">soap/</dt> 
     398  <dd> 
     399    <dl> 
     400      <dt class="path">calc/</dt> 
     401      <dd>Calc service contains 2 servers and 2 clients. 
     402        calc.rb is hosted by server.rb, calc2.rb is hosted by server2.rb. 
     403        client.rb is for server.rb, client2.rb is for server2.rb. 
     404        <dl> 
     405          <dt>calc.rb</dt> 
     406          <dd>Calc server definition using module and module methods. 
     407            This module responds 'add', 'sub', 'multi' and 'div'. 
     408          </dd> 
     409          <dt>server.rb</dt> 
     410          <dd>Standalone server. 
     411            It requires calc.rb and serve module methods of this module. 
     412            To run this server; 
     413<pre class="path"> 
     414$ ./server.rb 
     415</pre> 
     416          </dd> 
     417          <dt>server.cgi</dt> 
     418          <dd>CGI version. 
     419            To run this server, copy server.cgi and calc.rb to suitable 
     420            directory of your WWW server. 
     421          </dd> 
     422          <dt>client.rb</dt> 
     423          <dd>It connects to server.rb or server.cgi, 
     424            and hit methods served by calc.rb. 
     425            To run the client; 
     426<pre class="path"> 
     427$ ./client.rb 
     428</pre> 
     429            Is it stacked?  Did you run the server.rb?<br/> 
     430            Turn logger and wireDumpDev in its source on to see logs and wire 
     431            dumps of SOAP transport. 
     432          </dd> 
     433          <dt>calc2.rb</dt> 
     434          <dd>Calc server definition using class and instance methods. 
     435            An instance of this class holds its value.  Methods 'set' and 'get' 
     436            is to set/get the value. 
     437            It also responds to '+', '-', '*', and '/'. 
     438          </dd> 
     439          <dt>server2.rb</dt> 
     440          <dd>It requires calc2.rb and creates an instance of CalcService2 
     441            that responds all SOAP requests. 
     442            Since '+', '-' and so on of calc2.rb are not valid name as an 
     443            element in XML instance, this sample register the method '+' as 
     444            'add', '-' as 'sub', and so on. 
     445          </dd> 
     446          <dt>server2.cgi</dt> 
     447          <dd>CGI version. 
     448            To run this server, copy server2.cgi and calc2.rb to suitable 
     449            directory of your WWW server. 
     450          </dd> 
     451          <dt>client2.rb</dt> 
     452          <dd>It connects to server2.rb or server2.cgi. 
     453            Set a value at first and call methods like 'puts objAtServer + 2'. 
     454          </dd> 
     455        </dl> 
     456      </dd> 
     457 
     458      <dt class="path">exchange/</dt> 
     459      <dd>A sample to retrieve the currency rate from public SOAP service. 
     460        <dl> 
     461          <dt>iExchange.rb</dt> 
     462          <dd>It includes common definitions for client and server of 
     463            Exchange service.  Including only a definition of namespace URI of 
     464            this service.</dd> 
     465          <dt>exchange.rb</dt> 
     466          <dd>Definition of servant class ExchangeService which returns the 
     467            currency rate after connecting to another site by SOAP to get the 
     468            real rate. 
     469            So that this class is the SOAP server for local client and  
     470            is also a SOAP client for public server. 
     471            An instance of this class is hosted by server.rb. 
     472            The instance responds to only 'getRate' which receives two country 
     473            code such as 'USA' and 'Japan'.</dd> 
     474          <dt>server.rb</dt> 
     475          <dd>It requires exchange.rb and creates an instance of 
     476            ExchangeService that responds all SOAP requests. 
     477            To run this server; 
     478<pre class="path"> 
     479$ ./server.rb 
     480</pre> 
     481          </dd> 
     482          <dt>server.cgi</dt> 
     483          <dd>CGI version.  To run this server, copy server.cgi and exchange.rb 
     484            to suitable directory of your WWW server.</dd> 
     485          <dt>client.rb</dt> 
     486          <dd>It connects to server.rb.  Turn logger and wireDumpDev in its 
     487            source on to see logs and wire dumps of SOAP transport. 
     488            To run the client; 
     489<pre class="path"> 
     490$ ./client.rb 
     491</pre> 
     492          </dd> 
     493        </dl> 
     494      </dd> 
     495 
     496      <dt class="path">authheader/</dt> 
     497      <dd>It contains a sample to utilize SOAP Header handler.  Send 
     498        userid/passwd and receive sessionid via SOAP Header</dd> 
     499 
     500      <dt class="path">raa2.4/</dt> 
     501      <dd>sample/soap/raa2.4/sample.rb is a sample client to retrieve project 
     502        information on RAA.  It uses raaDriver.rb which is generated by 
     503        wsdl2ruby.rb from WSDL at 
     504        <a href="http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.4/">http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.4/</a>. 
     505        You'll find wsdlDriver.rb in sample/wsdl/raa2.4/wsdlDriver.rb which 
     506        loads the WSDL at runtime to connect.</dd> 
     507 
     508      <dt class="path">scopesample/</dt> 
     509      <dd>SOAP server sample which shows a different behavior of SOAP server scope settings; Request scope vs Application scope. 
     510        sample/soap/scopesample/servant.rb is a servant which holds push-ed 
     511        object that can be pop-ed afterward. 
     512        See sample/soap/scopesample/server.rb how to define a servant as 
     513        a Request scope servant or an Application scope servant. 
     514        Application scope servant works as we expected because the servant 
     515        object is living from beginning to the time server terminated. 
     516        In contrast, request scope servant(s) does not work because a servant 
     517        object is created for each request. 
     518      </dd> 
     519 
     520      <dt class="path">ssl/</dt> 
     521      <dd>SSL SOAP server and client samples. 
     522        <dl> 
     523          <dt class="path">sslserver.rb</dt> 
     524          <dd>SSL server sample which hosts "hello world" service. 
     525            This server uses SSL server certificate in files/ directory 
     526            (SSL client should check this certificate for SSL server 
     527            authentication).</dd> 
     528          <dt class="path">sslserver_noauth.rb</dt> 
     529          <dd>This server generates SSL server certificate 
     530            at runtime.  No security.</dd> 
     531          <dt class="path">sslserver_require_clientauth.rb</dt> 
     532          <dd>This server users SSL server certificate in files/ directory 
     533            and requires SSL client authentication (clients must 
     534            have SSL client certificate and send it to the server).</dd> 
     535          <dt class="path">sslclient.rb</dt> 
     536          <dd>SSL client sample which calls "hello world" service via HTTPS. 
     537            This client checks SSL server certificate sent from SSL server.</dd> 
     538          <dt class="path">sslclient_require_noserverauth.rb</dt> 
     539          <dd>This client does not check SSL server certificate. 
     540            No security.</dd> 
     541          <dt class="path">sslclient_with_clientauth.rb</dt> 
     542          <dd>This client sends SSL client certificate in files/ directory 
     543            and checks SSL server certificate.</dd> 
     544        </dl> 
     545      </dd> 
     546 
     547      <dt class="path">swa/</dt> 
     548      <dd>SOAP server and client sample of SwA (SOAP with Attachments).</dd> 
     549 
     550      <dt class="path">digraph.rb</dt> 
     551      <dd>A sample of SOAP marshalling/unmarshalling. 
     552        It creates a digraph that contains multi-ref-ed nodes at first 
     553        and marshals this object to get serialized XML instance. 
     554        Then reads and unmarshals this XML instance to recover a object 
     555        which has the same links among nodes in the digraph. 
     556      </dd> 
     557 
     558      <dt class="path">sampleStruct/</dt> 
     559      <dd>A sample to transmit complex structured object which has recursive 
     560        object reference. 
     561        <dl> 
     562          <dt>iSampleStruct.rb</dt> 
     563          <dd>It includes common definitions for client and server of 
     564            SampleStruct service.  Definition of SampleStruct class and 
     565            namespace URI of this service.</dd> 
     566          <dt>sampleStruct.rb</dt> 
     567          <dd>Definition of servant class SampleStructService. 
     568            An instance of this class is hosted by server.rb. 
     569            The instance responds to only 'hi' which receives a SampleStruct 
     570            and wraps it in the new instance of SampleStruct to return .</dd> 
     571          <dt>server.rb</dt> 
     572          <dd>It requires sampleStruct.rb and creates an instance of 
     573            SampleStructService that responds all SOAP requests. 
     574            To run this server; 
     575<pre class="path"> 
     576$ ./server.rb 
     577</pre> 
     578          </dd> 
     579          <dt>server.cgi</dt> 
     580          <dd>CGI version.  To run this server, copy server.cgi and 
     581            sampleStruct.rb to suitable directory of your WWW server.</dd> 
     582          <dt>client.rb</dt> 
     583          <dd>It connects to server.rb.  Turn logger and wireDumpDev in its 
     584            source on to see logs and wire dumps of SOAP transport. 
     585            To run the client; 
     586<pre class="path"> 
     587$ ./client.rb 
     588</pre> 
     589          </dd> 
     590        </dl> 
     591      </dd> 
     592 
     593      <dt class="path">icd/</dt> 
     594      <dd>A client for 
     595        <a href="http://www.iwebmethod.net/">Insider's Computer Dictionary Web Service</a>. 
     596        This service is implemented with ASP.NET so that it's also a sample of 
     597        a client which connects to ASP.NET. 
     598        CAUTION: this sample contains non-ascii chars in its source and dumped 
     599        results. 
     600        <dl> 
     601          <dt>IICD.rb</dt> 
     602          <dd>Class(type) definitions for this server.</dd> 
     603          <dt>icd.rb</dt> 
     604          <dd>Client implementation.  To run the client; 
     605<pre class="path"> 
     606$ ./icd.rb 
     607</pre> 
     608          </dd> 
     609        </dl> 
     610      </dd> 
     611    </dl> 
     612  </dd> 
     613 
     614  <dt class="path">wsdl/</dt> 
     615  <dd> 
     616    <dl> 
     617      <dt class="path">googleSearch/</dt> 
     618      <dd>Sample client to search with <a href="http://www.google.com/apis/">Google Web API</a> using WSDL.  You need to get a developer's key to use it.  See wsdlDriver.rb.</dd> 
     619 
     620      <dt class="path">amazon/</dt> 
     621      <dd>Sample client to connect with <a href="http://associates.amazon.com/exec/panama/associates/ntg/browse/-/1067662/086-5207681-4585409">AmazonWebServices</a> using WSDL.  See wsdlDriver.rb.</dd> 
     622 
     623      <dt class="path">documentliteral/</dt> 
     624      <dd>Sample client and server of document/literal service.  See README.txt in this directory to run this sample.</dd> 
     625 
     626      <dt class="path">noaa/</dt> 
     627      <dd>Sample client of National Weather Service digital weather forecast data service at http://weather.gov/</dd> 
     628 
     629      <dt class="path">raa2.4/</dt> 
     630      <dd>sample/wsdl/raa2.4/wsdlDriver.rb is a sample client to retrieve 
     631        project information on RAA.  It loads WSDL file  
     632        <a href="http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.4/">http://www.ruby-lang.org/xmlns/soap/interface/RAA/0.0.4/</a> 
     633        at <strong>runtime</strong>. 
     634        You'll find a sample client at sample/soap/raa2.4/sample.rb 
     635        which connects RAA using pre-generated service definitions 
     636        (not loads WSDL at runtime).</dd> 
     637 
     638      <dt class="path">googleAdwords/</dt> 
     639      <dd>Sample client of Google AdWords service.   
     640        CAUTION: I don't have an account of AdWords so the sample code is NOT 
     641        tested.  Please tell me (nahi@ruby-lang.org) if you will get good/bad 
     642        result in communicating with AdWords Server.</dd> 
     643 
     644      <dt class="path">amazonEC/</dt> 
     645      <dd>Sample client of AWSECommerce service. 
     646        CAUTION: I don't have an account of AWSECommerce so the sample code is 
     647        NOT tested.  Please tell me (nahi@ruby-lang.org) if you will get 
     648        good/bad result in communicating with AWSECommerce Server.</dd> 
     649    </dl> 
     650  </dd> 
     651 
     652</dl> 
     653</dd> 
     654 
     655</dl> 
     656 
     657<h2 id="restrictions" name="restrictions"><span class="content">7. Restrictions</span></h2> 
     658 
     659<p> 
     660The following features of the 
     661<a href="http://www.w3.org/TR/SOAP/">SOAP 1.1 (W3C Note)</a> 
     662spec are <strong>NOT</strong> currently supported: 
     663</p> 
     664 
     665<ul> 
     666<li style="margin-top: 2ex;">SOAP Envelope 
     667<ul> 
     668<li>SOAP actor attribute</li> 
     669<li>SOAP Fault Codes</li> 
     670</ul></li> 
     671<li style="margin-top: 2ex;">Othres 
     672<ul> 
     673<li>Transport binding except HTTP server and client</li> 
     674</ul></li> 
     675</ul> 
     676 
     677<h2 id="resources" name="resources"><span class="content">8. Resources</span></h2> 
     678 
     679<dl> 
     680<dt class="path"><a href="http://dev.ctor.org/soap4r">soap4r project page</a></dt> 
     681<dd>You can get the latest information and the latest development version of soap4r here.</dd> 
     682 
     683<dt class="path"><a href="http://raa.ruby-lang.org/project/soap4r">[RAA:soap4r]</a></dt> 
     684<dd>RAA meta information</dd> 
     685 
     686<dt class="path"><a href="http://groups-beta.google.com/group/soap4r">soap4r Mailing List on Google Groups</a></dt> 
     687<dd>Feel free to join the list to ask any question and comment about soap4r. 
     688  You can browse messages archive.  Bear in mind that Google Groups is still 
     689  in [beta] stage.</dd> 
     690 
     691<dt class="path">Subversion repository</dt> 
     692<dd>Soap4r's svn repository is here: http://dev.ctor.org/svn/soap4r/ . 
     693  To checkout the latest soap4r module, try 
     694<pre> 
     695svn checkout http://dev.ctor.org/svn/soap4r/trunk soap4r 
     696</pre> 
     697  CVS repository of soap4r which was located at cvs.ruby-lang.org is pending since 2004-05-27. </dd> 
     698</dl> 
     699 
     700<h2 id="history" name="history"><span class="content">9. History</span></h2> 
     701 
     702<dl> 
     703<dt>1.5.4 - May 13, 2005</dt> 
     704<dd>This is version 1.5.4. 
     705Version 1.5.3 is the module which is included in ruby-1.8.2, 
     706and not released independently. 
     707Following changes consist from 2 parts; Changes from 1.5.3 to 1.5.4, 
     708and from 1.5.2 to 1.5.3. 
     709<br/><br/> 
     710Changes in 1.5.4 from 1.5.3 
     711<br/><br/> 
     712<ul> 
     713  <li>SOAP client and server 
     714    <ul> 
     715      <li>for both client side and server side 
     716        <ul> 
     717          <li>improved document/literal service support.  style(rpc, document)/use(encoding, literal) combination are all supported.  for the detail about combination, see test/soap/test_style.rb.</li> 
     718          <li>let WSDLEncodedRegistry#soap2obj map SOAP/OM to Ruby according to WSDL as well as obj2soap.</li> 
     719          <li>let SOAP::Mapping::Object handle XML attribute for doc/lit service.  you can set/get XML attribute via accessor methods which as a name 'xmlattr_' prefixed (&lt;foo name="bar"/&gt; -&gt; Foo#xmlattr_name).</li> 
     720        </ul> 
     721      </li> 
     722      <li>client side 
     723        <ul> 
     724          <li>WSDLDriver capitalized name operation bug fixed.  from 1.5.3-ruby1.8.2, operation which has capitalized name (such as KeywordSearchRequest in AWS) is defined as a method having uncapitalized name. (converted with GenSupport.safemethodname to handle operation name 'foo-bar').  it introduced serious incompatibility; in the past, it was defined as a capitalized.  define capitalized method as well under that circumstance.</li> 
     725 
     726          <li>added new factory interface 'WSDLDriverFactory#create_rpc_driver' to create RPC::Driver, not WSDLDriver (RPC::Driver and WSDLDriver are merged).  'WSDLDriverFactory#create_driver' still creates WSDLDriver for compatibility but it warns that the method is deprecated.  please use create_rpc_driver instead of create_driver.</li> 
     727          <li>allow to use an URI object as an endpoint_url even with net/http, not http-access2.</li> 
     728        </ul> 
     729      </li> 
     730      <li>server side 
     731        <ul> 
     732          <li>added mod_ruby support to SOAP::CGIStub.  rename a CGI script server.cgi to server.rb and let mod_ruby's RubyHandler handles the script.  CGIStub detects if it's running under mod_ruby environment or not.</li> 
     733          <li>added fcgi support to SOAP::CGIStub.  see the sample at sample/soap/calc/server.fcgi.  (almost same as server.cgi but has fcgi handler at the bottom.)</li> 
     734          <li>allow to return a SOAPFault object to respond customized SOAP fault.</li> 
     735          <li>added the interface 'generate_explicit_type' for server side (CGIStub, HTTPServer).  call 'self.generate_explicit_type = true' if you want to return simplified XML even if it's rpc/encoded service.</li> 
     736        </ul> 
     737      </li> 
     738    </ul> 
     739  </li> 
     740 
     741  <li>WSDL 
     742    <ul> 
     743      <li>WSDL definition 
     744        <ul> 
     745          <li>improved XML Schema support such as extension, restriction, simpleType, complexType + simpleContent, ref, length, import, include.</li> 
     746          <li>reduced "unknown element/attribute" warnings (warn only 1 time for each QName).</li> 
     747          <li>importing XSD file at schemaLocation with xsd:import.</li> 
     748        </ul> 
     749      </li> 
     750      <li>code generation from WSDL 
     751        <ul> 
     752          <li>generator crashed when there's '-' in defined element/attribute name.</li> 
     753          <li>added ApacheMap WSDL definition.</li> 
     754        </ul> 
     755      </li> 
     756    </ul> 
     757  </li> 
     758 
     759  <li>Samples 
     760    <ul> 
     761      <li>added XML &lt;-&gt; Ruby mapping utility.  XSD::Mapping#xml2obj maps an XML to a tree of SOAP::Mapping::Object.  XSD::Mapping#obj2xml is for reverse direction conversion.  see a sample in sample/wsdl/noaa/client.rb</li> 
     762      <li>added a sample for weather.gov's NDFD services.</li> 
     763      <li>add a sample of googleAdWords.  CAUTION: I don't have an account of AdWords so the sample code is NOT tested.  Please tell me (nahi@ruby-lang.org) if you will get good/bad result in communicating with AdWords Server.</li> 
     764      <li>add a sample of AWSECommerce.  CAUTION: I don't have an account of AWSECommerce so the sample code is NOT tested.  Please tell me (nahi@ruby-lang.org) if you will get good/bad result in communicating with AWSECommerce Server.</li> 
     765    </ul> 
     766  </li> 
     767</ul> 
     768<br/> 
     769Changes in 1.5.3 from 1.5.2 
     770<br/><br/> 
     771<ul> 
     772  <li>SOAP client and server 
     773    <ul> 
     774      <li>for both client side and server side 
     775        <ul> 
     776          <li>added a header handler class for simple SOAPHeader handling.  see samples in sample/soap/authheader/*.</li> 
     777          <li>SSL support (both client side and server side).  check sample/soap/ssl/*</li> 
     778          <li>gzipped content encoding support.  see sample/soap/helloworld/hw_{c,s}_gzip.rb.</li> 
     779        </ul> 
     780      </li> 
     781      <li>client side 
     782        <ul> 
     783          <li>HTTP-Cookies support under soap4r + http-access2.  not supported under soap4r + net/http.</li> 
     784          <li>added a method (SOAP::RPC::Driver#test_loopback_response) for loopback test with the specified response.</li> 
     785          <li>added SOAP::RPC::Driver#loadproperty interface to load property file.</li> 
     786          <li>let SOAP::RPC::Driver#add_method returns Method object.  you can invoke a service like; drv.add_method(&#34;hello&#34;).call(&#34;world&#34;)</li> 
     787          <li>added http options to get/set timeout seconds. 
     788            <ul> 
     789              <li>for http-access2: 
     790                <ul> 
     791                  <li>driver.options[&#34;protocol.http.connect_timeout&#34;]</li> 
     792                  <li>driver.options[&#34;protocol.http.send_timeout&#34;]</li> 
     793                  <li>driver.options[&#34;protocol.http.receive_timeout&#34;]</li> 
     794                </ul> 
     795              </li> 
     796              <li>for net/http: 
     797                <ul> 
     798                  <li>driver.options[&#34;protocol.http.connect_timeout&#34;]</li> 
     799                  <li>driver.options[&#34;protocol.http.receive_timeout&#34;]</li> 
     800                </ul> 
     801              </li> 
     802            </ul> 
     803          </li> 
     804          <li>raise NotImplementedError when net/http + basic_auth.</li> 
     805        </ul> 
     806      </li> 
     807      <li>server side 
     808        <ul> 
     809          <li>introduced the new server class SOAP::RPC::HTTPServer which takes WEBrick's HTTPServer compatible config parameter.</li> 
     810          <li>added a debug log of SOAP request/response.</li> 
     811        </ul> 
     812      </li> 
     813    </ul> 
     814  </li> 
     815 
     816  <li>SOAP core part 
     817    <ul> 
     818      <li>added XMLSchema derived type support; byte, nonPositiveInteger, negativeInteger, nonNegativeInteger, positiveInteger, unsignedLong, unsignedInt, unsignedShort, unsignedByte.</li> 
     819      <li>'eval' cleanup.  I hope it allows soap4r to work under mod_ruby environment.</li> 
     820      <li>SOAPProperty raise RuntimeError under ruby-1.9 when accessing locked property.  still raises TypeError under ruby-1.8 or earlier.  the change is from ruby's behaviour change about an exception when accessing a frozen object.</li> 
     821      <li>make SOAPHeader a child of SOAPStruct, not SOAPArray.</li> 
     822      <li>SOAPProperty does not eval whole string.  \\, \t, \r, \n, \f escaping chars are supported like Java's Properties.</li> 
     823      <li>URI object was not mapped correctly so that URI object was not interoperable under some situation.  fixed.</li> 
     824      <li>SOAP::Mapping::Object: handle multiple value as an array. 
     825<pre> 
     826&lt;foo&gt; 
     827  &lt;bar&gt;1&lt;/bar&gt; 
     828  &lt;bar&gt;2&lt;/bar&gt; 
     829  &lt;bar&gt;3&lt;/bar&gt; 
     830  &lt;baz&gt;4&lt;/baz&gt; 
     831&lt;/foo&gt; 
     832  -&gt; 
     833foo.bar =&gt; [1, 2, 3] 
     834foo.baz =&gt; 4 
     835</pre> 
     836      </li> 
     837      <li>raise an exception while dumping singleton class. [ruby-dev:22588] 
     838<pre> 
     839e.g. c = class &lt;&lt; Object.new 
     840       class C; self; end 
     841     end 
     842     SOAPMarshal.dump(c) 
     843</pre> 
     844      </li> 
     845    </ul> 
     846  </li> 
     847 
     848  <li>WSDL 
     849    <ul> 
     850      <li>WSDL definition 
     851        <ul> 
     852          <li>added &lt;xsd:simpleContent&gt; support.</li> 
     853          <li>initial (means &#34;far from complete&#34;) simpleType support.</li> 
     854          <li>support parts attribute of soap:body element.</li> 
     855          <li>xmlSchema's 'any' element support; for parsing, just treat the element as an element which has a name 'any'.</li> 
     856          <li>add mustUnderstand attribute support.</li> 
     857          <li>a special well-known type: ApacheMap support.</li> 
     858        </ul> 
     859      </li> 
     860 
     861      <li>code generation from WSDL 
     862        <ul> 
     863          <li>added simple code generation utils (lib/xsd/codegen)</li> 
     864          <li>dump attribute definition in XMLSchema as 'attr_*' attribute. [experimental]</li> 
     865          <li>wsdl2ruby.rb: add document/literal service support.  see sample/wsdl/documentliteral/*</li> 
     866          <li>untyped element should be treated as xsd:anyType.</li> 
     867          <li>added a tool xsd2ruby.rb for generating classdef from xsd file.</li> 
     868        </ul> 
     869      </li> 
     870    </ul> 
     871  </li> 
     872 
     873  <li>Samples 
     874    <ul> 
     875      <li>added RAA/2.4 sample client</li> 
     876      <li>added sample for Application/Request scope use.  Session scope (with Cookies) feature is not yet exists.</li> 
     877    </ul> 
     878  </li> 
     879</ul> 
     880</dd> 
     881 
     882<dt>1.5.2 - December 25, 2003</dt> 
     883<dd> 
    73884<ul> 
    74885  <li>License; 
     
    94905    &quot;$rubylibdir/site_ruby/1.8/soap/property&quot;. 
    95906<pre> 
    96       client.protocol.http.proxy = http://myproxy:8080 
    97       client.protocol.http.no_proxy = 192.168.71.71,192.168.71.72 
     907client.protocol.http.proxy = http://myproxy:8080 
     908client.protocol.http.no_proxy = 192.168.71.71,192.168.71.72 
    98909</pre> 
    99910    Then all HTTP connections should use these proxy and no_proxy 
     
    110921    SOAP_USE_PROXY environment variable 'on', too. 
    111922<pre> 
    112       bash$ soap_use_proxy=on http_proxy=http://myproxy:8080 ruby ... 
    113       csh$  env soap_use_proxy=on http_proxy=http://myproxy:8080 ruby ... 
    114 </pre></li> 
    115  
    116     <li>Add SOAP::RPC::Driver#mandatorycharset= and 
    117     SOAP::WSDLDriver#mandatorycharset= interface to force using 
    118     charset when parsing response from buggy server such as AWS.</li> 
    119  
    120     <li>Support a halfway-typed multi-ref array that Axis dumps.</li> 
    121  
    122     <li>Added a interface XSD::Charset.encoding= to control internal 
    123     encoding scheme.  Internal encoding scheme was fixed to 'utf-8' 
    124     when iconv or uconv was installed.  You can set 'euc-jp', etc. 
    125     to avoid encoding scheme conversion if you know what encoding 
    126     scheme the server uses.</li> 
    127   </ul></li> 
    128  
    129   <li>Bug fixes; 
    130   <ul> 
    131     <li>SOAP::Marshal.unmarshal: raise an exception if parse fails. 
    132     (returned nil)</li> 
    133  
    134     <li>SOAP::WSDLDriver: decode unknown element according to self-defined 
    135     type even if WSDL was given.</li> 
    136  
    137     <li> SOAP::Mapping::Factory#create_empty_object: fix Class#allocate 
    138     emulation code for ruby/1.6.  no effective change under ruby/1.8.</li> 
    139  
    140     <li>SOAP::RPC::SOAPMethodResponse: element name of response message 
    141     could have the name other than 'return'.</li> 
    142  
    143     <li>SOAP::RPC::StandaloneServer: add methods 'shutdown' and 'status' 
    144     as delegates to WEBrick.</li> 
    145  
    146     <li>WSDL::SOAP::ClassDefCreator: WSDL/1.1 allows plural fault 
    147     definition in a operation.</li> 
    148  
    149     <li>XSD::Charset.init: use cp932 under emx. 
    150     Patched by Siena. / SHINAGAWA, Norihide.</li> 
    151   </ul></li> 
    152 </ul> 
    153  
    154 <p> 
    155 Thanks to all of soap4r users for their support. 
    156 </p> 
    157  
    158 <h2 id="install" name="install"><span class="content">2. Install</span></h2> 
    159  
    160 <p> 
    161 At first, see <a href="#dependencies">Dependencies</a> section. 
    162 You may need to install some extra packages. 
    163 Next, get the archived file of SOAP4R and extract it, then simply try; 
    164 </p> 
    165 <pre class="path"> 
    166 $ ruby install.rb 
    167 </pre> 
    168  
    169 <p> 
    170 Necessary files will be installed to suitable directory. 
    171 </p> 
    172  
    173 <p> 
    174 Files in lib/soap directory are SOAP4R library program itself. 
    175 </p> 
    176  
    177 <dl> 
    178 <dt class="path">lib/</dt> 
    179 <dd>Libraries.</dd> 
    180  
    181 <dt class="path">sample/</dt> 
    182 <dd>SOAP4R samples. 
    183 See <a href="#samples">Samples</a> section.</dd> 
    184  
    185 <dt class="path">test/</dt> 
    186 <dd>Some tests. 
    187 Unit test MUST cover all lines of code, but far from enough so far... 
    188 <br/> 
    189 test/interopR2/ directory includes Clients/Server for 
    190 <a href="http://www.xmethods.net/ilab/">`SOAPBuilders Interoperability Lab.'</a> 
    191 Followings are advanced examples to use complex type transmit, 
    192 sending base64 encoded string, multi-dimensional array, and so on. 
    193 <ul> 
    194 <li>test/interopR2/server.rb is a RPC Server side implementation.</li> 
    195 <li>test/interopR2/client.rb is a RPC Client side implementation.</li> 
    196 <li>test/interopR2/base.rb includes common definitions for client/server.</li> 
    197 </ul> 
    198 </dd> 
    199 </dl> 
    200  
    201 <h2 id="uninstall" name="uninstall"><span class="content">3. Uninstall</span></h2> 
    202  
    203 <p> 
    204 Simply delete installed files. 
    205 </p> 
    206  
    207 <h2 id="whats" name="whats"><span class="content">4. What is SOAP4R?</span></h2> 
    208  
    209 <p> 
    210 'SOAP4R' is an implementation of 
    211 <a href="http://www.w3.org/TR/SOAP/">Simple Object Access Protocol (SOAP) 1.1 (W3C Note)</a>. 
    212 </p> 
    213  
    214 <p> 
    215 Comments, information such as interoperability between SOAP4R and another implementation are welcomed. 
    216 Feel free sending mail to 
    217 <a href="mailto:nakahiro@sarion.co.jp" class="path">nakahiro@sarion.co.jp</a>. 
    218 </p> 
    219  
    220 <h2 id="dependencies" name="dependencies"><span class="content">5. Dependencies</span></h2> 
    221  
    222 <p> 
    223 SOAP4R is written in <a href="http://www.ruby-lang.org">Ruby</a> and 
    224 aims to use with Ruby application. 
    225 You have to install Ruby itself. 
    226 Ruby/1.6 series or later is required. 
    227 </p> 
    228  
    229 <p> 
    230 SOAP4R depends on following Ruby modules in 
    231 <a href="http://raa.ruby-lang.org">RAA</a>. 
    232 You also have to install these modules to use SOAP4R. 
    233 </p> 
    234  
    235 <dl> 
    236 <dt class="path">XML processor</dt> 
    237 <dd>SOAP4R requires a XML processor package installed. 
    238 Note: ruby/1.8 includes REXML so you don't have to install extra XML parser library.<br/> 
    239 For now, one of following XML processor must be installed 
    240 (SOAP4R automatically detects it in runtime). 
    241 <ul> 
    242 <li><a href="http://raa.ruby-lang.org/list.rhtml?name=xmlscan">[RAA:xmlscan]</a> (0.2.3, 0.3.x)</li> 
    243 <li><a href="http://raa.ruby-lang.org/list.rhtml?name=rexml">[RAA:REXML]</a> (2.7.1)</li> 
    244 <li><a href="http://raa.ruby-lang.org/list.rhtml?name=rexml-stable">[RAA:REXML-stable]</a> (2.4.8)</li> 
    245 <li><a href="http://raa.ruby-lang.org/list.rhtml?name=xmlparser">[RAA:XMLParser]</a> (0.6.5)</li> 
    246 </ul></dd> 
    247  
    248 <dt class="path"><a href="http://raa.ruby-lang.org/list.rhtml?name=webrick">[RAA:webrick]</a> (1.3.1)</dt> 
    249 <dd>TCP server toolkit by Gotoyuzo. 
    250 ruby/1.8 includes WEBrick in standard distribution library.</dd> 
    251  
    252 <dt class="path"><a href="http://raa.ruby-lang.org/list.rhtml?name=http-access2">[RAA:http-access2]</a> (2.0.0) (recommended for SOAP client)</dt> 
    253 <dd>Yet another HTTP client implementation by NaHi.</dd> 
    254  
    255 <dt class="path"><a href="http://raa.ruby-lang.org/list.rhtml?name=devel-logger">[RAA:devel-logger]</a> (1.1.0) (required under ruby/1.6)</dt> 
    256 <dd>Logging utility by NaHi.  ruby/1.8 includes this library so you don't have to re-install it.</dd> 
    257  
    258 <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> 
    259 <dd>Date and DateTime implementation by Todayoshi Funaba. 
    260