| 70 | | Changes from 1.5.1.2. |
|---|
| 71 | | </p> |
|---|
| 72 | | |
|---|
| | 64 | Changes 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 (<foo name="bar"/> -> 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 <-> 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> |
|---|
| | 124 | Changes 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("hello").call("world")</li> |
|---|
| | 143 | <li>added http options to get/set timeout seconds. |
|---|
| | 144 | <ul> |
|---|
| | 145 | <li>for http-access2: |
|---|
| | 146 | <ul> |
|---|
| | 147 | <li>driver.options["protocol.http.connect_timeout"]</li> |
|---|
| | 148 | <li>driver.options["protocol.http.send_timeout"]</li> |
|---|
| | 149 | <li>driver.options["protocol.http.receive_timeout"]</li> |
|---|
| | 150 | </ul> |
|---|
| | 151 | </li> |
|---|
| | 152 | <li>for net/http: |
|---|
| | 153 | <ul> |
|---|
| | 154 | <li>driver.options["protocol.http.connect_timeout"]</li> |
|---|
| | 155 | <li>driver.options["protocol.http.receive_timeout"]</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 | <foo> |
|---|
| | 183 | <bar>1</bar> |
|---|
| | 184 | <bar>2</bar> |
|---|
| | 185 | <bar>3</bar> |
|---|
| | 186 | <baz>4</baz> |
|---|
| | 187 | </foo> |
|---|
| | 188 | -> |
|---|
| | 189 | foo.bar => [1, 2, 3] |
|---|
| | 190 | foo.baz => 4 |
|---|
| | 191 | </pre> |
|---|
| | 192 | </li> |
|---|
| | 193 | <li>raise an exception while dumping singleton class. [ruby-dev:22588] |
|---|
| | 194 | <pre> |
|---|
| | 195 | e.g. c = class << 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 <xsd:simpleContent> support.</li> |
|---|
| | 209 | <li>initial (means "far from complete") 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> |
|---|
| | 238 | For details, see ChangeLog. |
|---|
| | 239 | </p> |
|---|
| | 240 | |
|---|
| | 241 | <p> |
|---|
| | 242 | Thanks 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> |
|---|
| | 248 | At first, see <a href="#dependencies">Dependencies</a> section. |
|---|
| | 249 | You may need to install some extra packages. |
|---|
| | 250 | Next, 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> |
|---|
| | 257 | Necessary files will be installed to suitable directory. |
|---|
| | 258 | </p> |
|---|
| | 259 | |
|---|
| | 260 | <p> |
|---|
| | 261 | Files 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. |
|---|
| | 270 | See <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/> |
|---|
| | 275 | test/interopR2/ directory includes Clients/Server for |
|---|
| | 276 | <a href="http://www.xmethods.net/ilab/">`SOAPBuilders Interoperability Lab.'</a> |
|---|
| | 277 | Followings are advanced examples to use complex type transmit, |
|---|
| | 278 | sending 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> |
|---|
| | 290 | Simply 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> |
|---|
| | 301 | Comments, information such as interoperability between SOAP4R and another implementation are welcomed. |
|---|
| | 302 | Feel 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> |
|---|
| | 309 | SOAP4R is written in <a href="http://www.ruby-lang.org">Ruby</a> and |
|---|
| | 310 | aims to use with Ruby application. |
|---|
| | 311 | You have to install Ruby itself. |
|---|
| | 312 | Ruby/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> |
|---|
| | 323 | SOAP4R depends on following Ruby modules in |
|---|
| | 324 | <a href="http://raa.ruby-lang.org">RAA</a>. |
|---|
| | 325 | You 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. |
|---|
| | 333 | It's not required when you don't use SSL, but it's recommended to use. |
|---|
| | 334 | The 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. |
|---|
| | 338 | It is requred when you want automatic CES conversion between |
|---|
| | 339 | SJIS <-> UTF8 and EUC <-> UTF8. |
|---|
| | 340 | Note: SJIS <-> 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. |
|---|
| | 350 | For 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. |
|---|
| | 373 | It is requred when you want automatic CES conversion between |
|---|
| | 374 | SJIS <-> UTF8 and EUC <-> UTF8. |
|---|
| | 375 | Note: SJIS <-> 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> |
|---|
| | 383 | Samples are in sample/ directory of distribution. |
|---|
| | 384 | Some samples try to connect to public servers. |
|---|
| | 385 | Set environment variable SOAP_USE_PROXY and HTTP_PROXY if you are in a firewall and you have |
|---|
| | 386 | http 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> |
|---|
| | 660 | The following features of the |
|---|
| | 661 | <a href="http://www.w3.org/TR/SOAP/">SOAP 1.1 (W3C Note)</a> |
|---|
| | 662 | spec 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> |
|---|
| | 695 | svn 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. |
|---|
| | 705 | Version 1.5.3 is the module which is included in ruby-1.8.2, |
|---|
| | 706 | and not released independently. |
|---|
| | 707 | Following changes consist from 2 parts; Changes from 1.5.3 to 1.5.4, |
|---|
| | 708 | and from 1.5.2 to 1.5.3. |
|---|
| | 709 | <br/><br/> |
|---|
| | 710 | Changes 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 (<foo name="bar"/> -> 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 <-> 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/> |
|---|
| | 769 | Changes 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("hello").call("world")</li> |
|---|
| | 787 | <li>added http options to get/set timeout seconds. |
|---|
| | 788 | <ul> |
|---|
| | 789 | <li>for http-access2: |
|---|
| | 790 | <ul> |
|---|
| | 791 | <li>driver.options["protocol.http.connect_timeout"]</li> |
|---|
| | 792 | <li>driver.options["protocol.http.send_timeout"]</li> |
|---|
| | 793 | <li>driver.options["protocol.http.receive_timeout"]</li> |
|---|
| | 794 | </ul> |
|---|
| | 795 | </li> |
|---|
| | 796 | <li>for net/http: |
|---|
| | 797 | <ul> |
|---|
| | 798 | <li>driver.options["protocol.http.connect_timeout"]</li> |
|---|
| | 799 | <li>driver.options["protocol.http.receive_timeout"]</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 | <foo> |
|---|
| | 827 | <bar>1</bar> |
|---|
| | 828 | <bar>2</bar> |
|---|
| | 829 | <bar>3</bar> |
|---|
| | 830 | <baz>4</baz> |
|---|
| | 831 | </foo> |
|---|
| | 832 | -> |
|---|
| | 833 | foo.bar => [1, 2, 3] |
|---|
| | 834 | foo.baz => 4 |
|---|
| | 835 | </pre> |
|---|
| | 836 | </li> |
|---|
| | 837 | <li>raise an exception while dumping singleton class. [ruby-dev:22588] |
|---|
| | 838 | <pre> |
|---|
| | 839 | e.g. c = class << 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 <xsd:simpleContent> support.</li> |
|---|
| | 853 | <li>initial (means "far from complete") 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> |
|---|