annotate apache-xmlrpc-3.1.3/docs/server.html @ 151:db5f735fd2b4

add xml-rpc.jar
author e085711
date Sat, 10 Sep 2011 04:13:50 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
151
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
2
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
3
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
4
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
5
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
6
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
7
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
8
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
9
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
10
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
11
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
12
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
13 <html xmlns="http://www.w3.org/1999/xhtml">
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
14 <head>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
15 <title>ws-xmlrpc - The Apache XML-RPC Server</title>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
16 <style type="text/css" media="all">
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
17 @import url("./css/maven-base.css");
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
18 @import url("./css/maven-theme.css");
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
19 @import url("./css/site.css");
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
20 </style>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
21 <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
22 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
23 </head>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
24 <body class="composite">
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
25 <div id="banner">
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
26 <a href="" id="bannerLeft">
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
27
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
28 <img src="images/xmlrpc-logo.gif" alt="" />
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
29
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
30 </a>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
31 <div class="clear">
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
32 <hr/>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
33 </div>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
34 </div>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
35 <div id="breadcrumbs">
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
36
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
37
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
38
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
39
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
40
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
41
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
42
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
43
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
44 <div class="xleft">
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
45 Last Published: 2010-02-06
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
46 </div>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
47 <div class="xright"> <a href="http://www.apache.org/" class="externalLink">Apache</a>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
48 |
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
49 <a href="../">Webservices</a>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
50 |
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
51 <a href="">XML-RPC</a>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
52
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
53
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
54
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
55
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
56
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
57
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
58
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
59
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
60 </div>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
61 <div class="clear">
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
62 <hr/>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
63 </div>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
64 </div>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
65 <div id="leftColumn">
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
66 <div id="navcolumn">
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
67
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
68
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
69
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
70
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
71
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
72
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
73
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
74
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
75 <h5>XML-RPC</h5>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
76 <ul>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
77
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
78 <li class="none">
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
79 <a href="index.html">Overview</a>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
80 </li>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
81
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
82 <li class="none">
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
83 <a href="download.html">Download</a>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
84 </li>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
85
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
86 <li class="none">
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
87 <a href="changes-report.html">Changes</a>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
88 </li>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
89
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
90 <li class="none">
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
91 <a href="mail-lists.html">Mailing Lists</a>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
92 </li>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
93
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
94 <li class="none">
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
95 <a href="contributing.html">Contributing</a>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
96 </li>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
97
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
98 <li class="none">
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
99 <a href="xmlrpc2">XML-RPC 2</a>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
100 </li>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
101
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
102 <li class="none">
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
103 <a href="links.html">Links</a>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
104 </li>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
105 </ul>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
106 <h5>Documentation</h5>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
107 <ul>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
108
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
109 <li class="none">
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
110 <a href="client.html">Client Classes</a>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
111 </li>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
112
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
113 <li class="none">
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
114 <strong>Server Side XML-RPC</strong>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
115 </li>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
116
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
117 <li class="none">
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
118 <a href="extensions.html">Vendor Extensions</a>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
119 </li>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
120
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
121 <li class="none">
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
122 <a href="ssl.html">SSL</a>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
123 </li>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
124
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
125 <li class="none">
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
126 <a href="introspection.html">Introspection</a>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
127 </li>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
128
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
129 <li class="none">
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
130 <a href="advanced.html">Advanced Techniques</a>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
131 </li>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
132
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
133 <li class="none">
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
134 <a href="types.html">XML-RPC Types</a>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
135 </li>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
136
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
137 <li class="none">
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
138 <a href="faq.html">FAQ</a>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
139 </li>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
140
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
141 <li class="none">
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
142 <a href="apidocs/index.html">Javadocs</a>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
143 </li>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
144 </ul>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
145 <h5>Project Documentation</h5>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
146 <ul>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
147
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
148
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
149
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
150
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
151
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
152
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
153
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
154
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
155
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
156
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
157
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
158
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
159
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
160
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
161
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
162
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
163
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
164
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
165
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
166
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
167
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
168
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
169
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
170
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
171
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
172
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
173
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
174 <li class="collapsed">
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
175 <a href="project-info.html">Project Information</a>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
176 </li>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
177
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
178
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
179
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
180
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
181
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
182
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
183
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
184
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
185
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
186 <li class="collapsed">
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
187 <a href="project-reports.html">Project Reports</a>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
188 </li>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
189 </ul>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
190 <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
191 <img alt="Built by Maven" src="./images/logos/maven-feather.png"></img>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
192 </a>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
193
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
194
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
195
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
196
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
197
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
198
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
199
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
200
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
201 </div>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
202 </div>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
203 <div id="bodyColumn">
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
204 <div id="contentBox">
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
205 <div class="section"><h2>Server-side XML-RPC</h2>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
206 <p>If you have read and understood the previous document about the <a href="./client.html">Apache XML-RPC client</a>, then the server isn't too much news.</p>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
207 <p>First of all, there is an object, called the XmlRpcServer. This objects purpose is to receive and execute XML-RPC calls by the clients. The XmlRpcServer <b>can</b> be embedded into a servlet container, or another HTTP server (for example, the minimal web server, that comes with XML-RPC), but it doesn't need to. Take the local transport as an example: In that case the XML-RPC server is simply embedded into the client application.</p>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
208 <p>Like the XmlRpcClient, the XmlRpcServer needs a configuration, which is given by the XmlRpcServerConfigImpl object.</p>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
209 </div>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
210 <div class="section"><h2>The XML-RPC Servlet</h2>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
211 <p>The easiest way to create an XML-RPC Server is the XmlRpcServlet, which has an automatically embedded instance of XmlRpcServer. This servlet allows you to create a server within 10 minutes or so:</p>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
212 <ol type="1"><li>Create a class, or a set of classes, which are implementing the remote procedure calls. Here's an example of such a class:<div class="source"><pre> package org.apache.xmlrpc.demo;
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
213 public class Calculator {
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
214 public int add(int i1, int i2) {
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
215 return i1 + i2;
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
216 }
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
217 public int subtract(int i1, int i2) {
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
218 return i1 - i2;
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
219 }
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
220 } </pre>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
221 </div>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
222 <p>This class has two public, non-static methods, which should be available to the clients.</p>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
223 </li>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
224 <li>Create a property file, which contains at least one property. The property name is arbitrary, and the property value is the fully qualified name of the Calculator class. For example, like that:<div class="source"><pre> Calculator=org.apache.xmlrpc.demo.Calculator </pre>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
225 </div>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
226 <p>The property file must be called <tt>XmlRpcServlet.properties</tt>, and it must be located in the package org.apache.xmlrpc.webserver. In other words, you would typically put it into the directory org/apache/xmlrpc/webserver and add it to your jar file.</p>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
227 </li>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
228 <li>Add entries like the following to your war files web.xml:<div class="source"><pre> &lt;servlet&gt;
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
229 &lt;servlet-name&gt;XmlRpcServlet&lt;/servlet-name&gt;
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
230 &lt;servlet-class&gt;org.apache.xmlrpc.webserver.XmlRpcServlet&lt;/servlet-class&gt;
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
231 &lt;init-param&gt;
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
232 &lt;param-name&gt;enabledForExtensions&lt;/param-name&gt;
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
233 &lt;param-value&gt;true&lt;/param-value&gt;
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
234 &lt;description&gt;
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
235 Sets, whether the servlet supports vendor extensions for XML-RPC.
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
236 &lt;/description&gt;
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
237 &lt;/init-param&gt;
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
238 &lt;/servlet&gt;
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
239 &lt;servlet-mapping&gt;
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
240 &lt;servlet-name&gt;XmlRpcServlet&lt;/servlet-name&gt;
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
241 &lt;url-pattern&gt;/xmlrpc&lt;/url-pattern&gt;
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
242 &lt;/servlet-mapping&gt; </pre>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
243 </div>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
244 </li>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
245 </ol>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
246 <p>That's it! You have just created your first XML-RPC server. :-)</p>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
247 </div>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
248 <div class="section"><h2>The Server configuration</h2>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
249 <p>Unlike in the case of the clients configuration, there isn't much to configure on the server. The reason is, that most things depend on the client and the HTTP headers, which are received by the client. There is one very important property to configure, though:</p>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
250 <table class="bodyTable"><tbody><tr class="a"><td align="left">Property Name</td>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
251 <td align="left">Description</td>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
252 </tr>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
253 <tr class="b"><td align="left">enabledForExceptions</td>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
254 <td align="left">If the server catches an exception, and this<br />
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
255 property is set, then the server will convert<br />
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
256 the exception into a byte array (by using an<br />
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
257 ObjectOutputStream) and return the exception to<br />
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
258 the client. Note, that this may have privacy<br />
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
259 or even security implications, because Exceptions<br />
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
260 may contain arbitrary Java objects, which you<br />
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
261 possibly do not want to be sent to the client.</td>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
262 </tr>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
263 <tr class="a"><td align="left">enabledForExtensions</td>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
264 <td align="left">Whether the vendor extensions of Apache XML-RPC<br />
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
265 should be enabled. By default, Apache XML-RPC is<br />
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
266 strictly compliant to the XML-RPC specification.<br />
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
267 Enabling this property doesn't indicate, that the<br />
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
268 server is unable to serve requests by standard<br />
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
269 clients: In contrary, the servers behaviour<br />
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
270 depends on the client. Setting this property to<br />
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
271 true will only advice the server, that it <b>may</b><br />
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
272 accept requests, which ask for vendor extensions.<br />
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
273 For example, if a client sends a content-length<br />
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
274 header, then the server assumes, that the client<br />
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
275 <b>wants</b> a content-length header in the request<br />
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
276 and disables the streaming mode.</td>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
277 </tr>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
278 </tbody>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
279 </table>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
280 </div>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
281 <div class="section"><h2>Basic Authentication</h2>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
282 <p>Basic authentication is frequently used to authenticate and authorize users. Within Apache XML-RPC, basic authentication is done by the <a href="apidocs/org/apache/xmlrpc/XmlRpcHandler.html">XmlRpcHandler</a>. The handler receives an instance of <a href="apidocs/org/apache/xmlrpc/XmlRpcRequest.html">XmlRpcRequest</a>. This object has a method <tt>getConfig()</tt>, which returns an instance of <a href="apidocs/org/apache/xmlrpc/XmlRpcRequestConfig.html">XmlRpcRequestConfig</a>.</p>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
283 <p>If you are running within a HTTP server, then the request configuration may be casted to an instance of <a href="apidocs/org/apache/xmlrpc/common/XmlRpcHttpRequestConfig.html">XmlRpcHttpRequestConfig</a>. This object has methods <tt>getBasicUserName()</tt>, and <tt>getBasicPassword()</tt>, which provide the necessary details.</p>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
284 <p>In other words: Your task is to provide your own instance of <a href="apidocs/org/apache/xmlrpc/server/XmlRpcHandlerMapping.html">XmlRpcHandlerMapping</a>, which creates your own handlers. And your own handlers are responsible to validate the basic authentication details.</p>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
285 <p>Here's an example servlet, which overrides the default <a href="apidocs/org/apache/xmlrpc/server/PropertyHandlerMapping.html">PropertyHandlerMapping</a>.</p>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
286 <div class="source"><pre> public class MyServlet extends XmlRpcServlet {
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
287 private boolean isAuthenticated(String pUserName, String pPassword) {
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
288 return &quot;foo&quot;.equals(pUserName) &amp;&amp; &quot;bar&quot;.equals(pPassword);
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
289 }
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
290 protected XmlRpcHandlerMapping newXmlRpcHandlerMapping() throws XmlRpcException {
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
291 PropertyHandlerMapping mapping
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
292 = (PropertyHandlerMapping) super.newXmlRpcHandlerMapping();
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
293 AbstractReflectiveHandlerMapping.AuthenticationHandler handler =
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
294 new AbstractReflectiveHandlerMapping.AuthenticationHandler(){
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
295 public boolean isAuthorized(XmlRpcRequest pRequest){
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
296 XmlRpcHttpRequestConfig config =
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
297 (XmlRpcHttpRequestConfig) pRequest.getConfig();
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
298 return isAuthenticated(config.getBasicUserName(),
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
299 config.getBasicPassword());
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
300 };
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
301 };
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
302 mapping.setAuthenticationHandler(handler);
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
303 return mapping;
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
304 }
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
305 } </pre>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
306 </div>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
307 </div>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
308 <div class="section"><h2>The WebServer class</h2>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
309 <p>The <a href="apidocs/org/apache/xmlrpc/webserver/WebServer.html">WebServer</a> is a minimal HTTP server, that might be used as an embedded web server.</p>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
310 <p>Use of the WebServer has grown very popular amongst users of Apache XML-RPC. Why this is the case, can hardly be explained, because the WebServer is at best a workaround, compared to full blown servlet engines like Tomcat or Jetty. For example, under heavy load it will almost definitely be slower than a real servlet engine, because it does neither support proper keepalive (multiple requests per physical connection) nor chunked mode (in other words, it cannot stream requests).</p>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
311 <p>If you still insist in using the WebServer, it is recommended to use its subclass, the <a href="apidocs/org/apache/xmlrpc/webserver/ServletWebServer.html">ServletWebServer</a> instead, which offers a minimal subset of the servlet API. In other words, you keep yourself the option to migrate to a real servlet engine later.</p>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
312 <p>Use of the WebServer goes roughly like this: First of all, create a property file (for example &quot;MyHandlers.properties&quot;) and add it to your jar file. The property keys are handler names and the property values are the handler classes. Once that is done, create an instance of WebServer.</p>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
313 <div class="source"><pre> package org.apache.xmlrpc.demo.webserver;
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
314
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
315 import java.net.InetAddress;
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
316
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
317 import org.apache.xmlrpc.common.TypeConverterFactoryImpl;
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
318 import org.apache.xmlrpc.demo.webserver.proxy.impls.AdderImpl;
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
319 import org.apache.xmlrpc.server.PropertyHandlerMapping;
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
320 import org.apache.xmlrpc.server.XmlRpcServer;
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
321 import org.apache.xmlrpc.server.XmlRpcServerConfigImpl;
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
322 import org.apache.xmlrpc.webserver.WebServer;
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
323
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
324 public class Server {
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
325 private static final int port = 8080;
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
326
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
327 public static void main(String[] args) throws Exception {
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
328 WebServer webServer = new WebServer(port);
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
329
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
330 XmlRpcServer xmlRpcServer = webServer.getXmlRpcServer();
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
331
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
332 PropertyHandlerMapping phm = new PropertyHandlerMapping();
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
333 /* Load handler definitions from a property file.
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
334 * The property file might look like:
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
335 * Calculator=org.apache.xmlrpc.demo.Calculator
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
336 * org.apache.xmlrpc.demo.proxy.Adder=org.apache.xmlrpc.demo.proxy.AdderImpl
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
337 */
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
338 phm.load(Thread.currentThread().getContextClassLoader(),
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
339 &quot;MyHandlers.properties&quot;);
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
340
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
341 /* You may also provide the handler classes directly,
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
342 * like this:
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
343 * phm.addHandler(&quot;Calculator&quot;,
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
344 * org.apache.xmlrpc.demo.Calculator.class);
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
345 * phm.addHandler(org.apache.xmlrpc.demo.proxy.Adder.class.getName(),
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
346 * org.apache.xmlrpc.demo.proxy.AdderImpl.class);
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
347 */
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
348 xmlRpcServer.setHandlerMapping(phm);
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
349
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
350 XmlRpcServerConfigImpl serverConfig =
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
351 (XmlRpcServerConfigImpl) xmlRpcServer.getConfig();
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
352 serverConfig.setEnabledForExtensions(true);
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
353 serverConfig.setContentLengthOptional(false);
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
354
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
355 webServer.start();
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
356 }
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
357 } </pre>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
358 </div>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
359 <p>The Calculator class can be found above. The Adder and AdderImpl classes can be found in the <a href="advanced.html">proxy example</a>.</p>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
360 <p>Jimisola Laursen, who provided the above example, has also supplied an example for the client:</p>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
361 <div class="source"><pre> package org.apache.xmlrpc.demo.client;
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
362
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
363 import java.net.MalformedURLException;
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
364 import java.net.URL;
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
365
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
366 import org.apache.xmlrpc.XmlRpcException;
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
367 import org.apache.xmlrpc.client.XmlRpcClient;
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
368 import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
369 import org.apache.xmlrpc.client.XmlRpcCommonsTransportFactory;
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
370 import org.apache.xmlrpc.client.util.ClientFactory;
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
371 import org.apache.xmlrpc.demo.proxy.Adder;
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
372
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
373 public class Client {
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
374 public static void main(String[] args) throws Exception {
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
375 // create configuration
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
376 XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
377 config.setServerURL(new URL(&quot;http://127.0.0.1:8080/xmlrpc&quot;));
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
378 config.setEnabledForExtensions(true);
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
379 config.setConnectionTimeout(60 * 1000);
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
380 config.setReplyTimeout(60 * 1000);
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
381
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
382 XmlRpcClient client = new XmlRpcClient();
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
383
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
384 // use Commons HttpClient as transport
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
385 client.setTransportFactory(
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
386 new XmlRpcCommonsTransportFactory(client));
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
387 // set configuration
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
388 client.setConfig(config);
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
389
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
390 // make the a regular call
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
391 Object[] params = new Object[]
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
392 { new Integer(2), new Integer(3) };
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
393 Integer result = (Integer) client.execute(&quot;Calculator.add&quot;, params);
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
394 System.out.println(&quot;2 + 3 = &quot; + result);
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
395
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
396 // make a call using dynamic proxy
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
397 ClientFactory factory = new ClientFactory(client);
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
398 Adder adder = (Adder) factory.newInstance(Adder.class);
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
399 int sum = adder.add(2, 4);
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
400 System.out.println(&quot;2 + 4 = &quot; + sum);
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
401 }
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
402 } </pre>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
403 </div>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
404 </div>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
405 <div class="section"><h2>The ServletWebServer class</h2>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
406 <p>This is a subclass of the standalone WebServer, which offers a minimal servlet API. It is recommended to use this class, rather than the WebServer, because it offers you a smooth migration path to a full blown servlet engine.</p>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
407 <p>Use of the <a href="apidocs/org/apache/xmlrpc/webserver/ServletWebServer.html">ServletWebServer</a> goes like this: First of all, create a servlet. It may be an instance of <a name="alink_XmlRpcServlet">@link XmlRpcServlet</a> or a subclass thereof. Note, that servlets are stateless: One servlet may be used by multiple threads (aka requests) concurrently. In other words, the servlet must not have any instance variables, other than those which are read only after the servlets initialization.</p>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
408 <p>The XmlRpcServlet is by default using a property file named <tt>org/apache/xmlrpc/server/webserver/XmlRpcServlet.properties</tt>. See the <a href="apidocs/org/apache/xmlrpc/server/PropertyHandlerMapping.html">PropertyHandlerMapping</a> for details on the property file.</p>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
409 <div class="source"><pre> package org.apache.xmlrpc.demo.webserver;
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
410
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
411 import java.net.InetAddress;
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
412
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
413 import org.apache.xmlrpc.common.TypeConverterFactoryImpl;
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
414 import org.apache.xmlrpc.demo.webserver.proxy.impls.AdderImpl;
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
415 import org.apache.xmlrpc.server.PropertyHandlerMapping;
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
416 import org.apache.xmlrpc.server.XmlRpcServer;
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
417 import org.apache.xmlrpc.server.XmlRpcServerConfigImpl;
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
418 import org.apache.xmlrpc.webserver.ServletWebServer;
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
419
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
420 public class ServletServer {
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
421 private static final int port = 8080;
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
422
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
423 public static void main(String[] args) throws Exception {
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
424 XmlRpcServlet servlet = new XmlRpcServlet();
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
425 ServletWebServer webServer = new ServletWebServer(servlet, port);
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
426 webServer.start();
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
427 }
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
428 } </pre>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
429 </div>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
430 </div>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
431
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
432 </div>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
433 </div>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
434 <div class="clear">
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
435 <hr/>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
436 </div>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
437 <div id="footer">
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
438 <div class="xright">&#169;
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
439 2001-2010
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
440
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
441 The Apache Software Foundation
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
442
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
443
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
444
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
445
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
446
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
447
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
448
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
449
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
450 </div>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
451 <div class="clear">
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
452 <hr/>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
453 </div>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
454 </div>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
455 </body>
db5f735fd2b4 add xml-rpc.jar
e085711
parents:
diff changeset
456 </html>