1SOAP::WSDL::Server(3) User Contributed Perl DocumentationSOAP::WSDL::Server(3)
2
3
4
6 SOAP::WSDL::Server - WSDL based SOAP server base class
7
9 Don't use directly, use the SOAP::WSDL::Server::* subclasses instead.
10
12 SOAP::WSDL::Server basically follows the architecture sketched below
13 (though dispatcher classes are not implemented yet)
14
15 SOAP Request SOAP Response
16 | ^
17 V |
18 ------------------------------------------
19 | SOAP::WSDL::Server |
20 | -------------------------------------- |
21 | | Transport Class | |
22 | |--------------------------------------| |
23 | | Deserializer | Serializer | |
24 | |--------------------------------------| |
25 | | Dispatcher | |
26 | -------------------------------------- |
27 ------------------------------------------
28 | calls ^
29 v | returns
30 -------------------------------------
31 | Handler |
32 -------------------------------------
33
34 All of the components (Transport class, deserializer, dispatcher and
35 serializer) are implemented as plugins.
36
37 The architecture is not implemented as planned yet, but the dispatcher
38 is currently part of SOAP::WSDL::Server, which aggregates serializer
39 and deserializer, and is subclassed by transport classes (of which
40 SOAP::WSDL::Server::CGI is the only implemented one yet).
41
42 The dispatcher is currently based on the SOAPAction header. This does
43 not comply to the WS-I basic profile, which declares the SOAPAction as
44 optional.
45
46 The final dispatcher will be based on wire signatures (i.e. the classes
47 of the deserialized messages).
48
49 A hash-based dispatcher could be implemented by examining the top level
50 hash keys.
51
53 Builtin exceptions
54 SOAP::WSDL::Server handles the following errors itself:
55
56 In case of errors, a SOAP Fault containing an appropriate error message
57 is returned.
58
59 • XML parsing errors
60
61 • Configuration errors
62
63 Throwing exceptions
64 The proper way to throw a exception is just to die -
65 SOAP::WSDL::Server::CGI catches the exception and sends a SOAP Fault
66 back to the client.
67
68 If you want more control over the SOAP Fault sent to the client, you
69 can die with a SOAP::WSDL::SOAP::Fault11 object - or just let the
70 SOAP::Server's deserializer create one for you:
71
72 my $soap = MyServer::SomeService->new();
73
74 die $soap->get_deserializer()->generate_fault({
75 code => 'SOAP-ENV:Server',
76 role => 'urn:localhost',
77 message => "The error message to pas back",
78 detail => "Some details on the error",
79 });
80
81 You may use any other object as exception, provided it has a
82 serialize() method which returns the object's XML representation.
83
84 Subclassing
85 To write a transport-specific SOAP Server, you should subclass
86 SOAP::WSDL::Server.
87
88 See the "SOAP::WSDL::Server::*" modules for examples.
89
90 A SOAP Server must call the following method to actually handle the
91 request:
92
93 handle
94
95 Handles the SOAP request.
96
97 Returns the response message as XML.
98
99 Expects a "HTTP::Request" object as only parameter.
100
101 You may use any other object as parameter, as long as it implements the
102 following methods:
103
104 • header
105
106 Called as header('SOAPAction'). Must return the corresponding HTTP
107 header.
108
109 • content
110
111 Returns the request message
112
114 Copyright 2004-2008 Martin Kutter.
115
116 This file is part of SOAP-WSDL. You may distribute/modify it under the
117 same terms as perl itself
118
120 Martin Kutter <martin.kutter fen-net.de>
121
123 $Rev: 391 $
124 $LastChangedBy: kutterma $
125 $Id: Client.pm 391 2007-11-17 21:56:13Z kutterma $
126 $HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Client.pm $
127
128
129
130perl v5.34.0 2021-07-22 SOAP::WSDL::Server(3)