1.XML-RPC server端采用Apache XML-RPC
package
xmlrpc;

public
class
Calculator
...
{
public int add(int i1, int i2) ...{
return i1 + i2;
}

public int subtract(int i1, int i2) ...{
return i1 - i2;
}
}
package
xmlrpc.servlet;
import
java.io.IOException;
import
java.io.OutputStream;
import
javax.servlet.ServletException;
import
javax.servlet.http.HttpServlet;
import
javax.servlet.http.HttpServletRequest;
import
javax.servlet.http.HttpServletResponse;
import
org.apache.xmlrpc.XmlRpcServer;
import
xmlrpc.Calculator;

public
class
CalculatorServlet
extends
HttpServlet
...
{
@Override
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException ...{
XmlRpcServer server = new XmlRpcServer();
server.addHandler("CalculatorService", new Calculator());
byte[] result = server.execute(request.getInputStream());
response.setContentType("text/xml; charset=UTF-8");
response.setContentLength(result.length);
OutputStream out = response.getOutputStream();
out.write(result);
out.flush();
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException ...{
doPost(request, response);
}
}
<?
xml version="1.0" encoding="UTF-8"
?>
<
web-app
xmlns
="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
version
="2.4"
xsi:schemaLocation
="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
>
<
servlet
>
<
servlet-name
>
CalculatorServlet
</
servlet-name
>
<
servlet-class
>
xmlrpc.servlet.CalculatorServlet
</
servlet-class
>
</
servlet
>

<
servlet-mapping
>
<
servlet-name
>
CalculatorServlet
</
servlet-name
>
<
url-pattern
>
/CalculatorServlet
</
url-pattern
>
</
servlet-mapping
>
<
welcome-file-list
>
<
welcome-file
>
index.jsp
</
welcome-file
>
</
welcome-file-list
>
</
web-app
>
2.XML-RPC client端采用Ruben Daniels的javascript实现
<!
DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"
>
<
html
>
<
head
>
<
meta
http-equiv
="Content-Type"
content
="text/html; charset=UTF-8"
>
<
title
>
访问XMLRPC
</
title
>
<
script
src
="scripts/vcXMLRPC.js"
></
script
>

<
script
type
="text/javascript"
>
...
<!--
var AllFunc = XMLRPC.getService("http://localhost:8080/xfire/CalculatorServlet");
AllFunc.add("CalculatorService.subtract", "subtract");
AllFunc.add("CalculatorService.add", "add");

/**//**
* calculate the sum of add1 and add2 and put the result of the XML-RPC
* call into sum text
*/
function add()...{
try ...{
var add1 = parseInt(document.getElementById("add1").value);
var add2 = parseInt(document.getElementById("add2").value);
var response = AllFunc.add(add1,add2);
document.getElementById("sum").value = response;
} catch(e) ...{
alert(e.description + " 注意:请输入整数!");
}
}

function subtract()...{
try ...{
var subtract1 = parseInt(document.getElementById("subtract1").value);
var subtract2 = parseInt(document.getElementById("subtract2").value);
var response = AllFunc.subtract(subtract1,subtract2);
document.getElementById("subtract").value = response;
} catch(e) ...{
alert(e.description + " 注意:请输入整数!");
}
}
//-->
</
script
>
</
head
>
<
body
>
<
input
type
="text"
name
="add1"
size
="10"
>
+
<
input
type
="text"
name
="add2"
size
="10"
>
=
<
input
type
="text"
name
="sum"
size
="10"
>
<
input
type
="button"
value
="求和"
onclick
="add();"
>
<
br
>
<
input
type
="text"
name
="subtract1"
size
="10"
>
-
<
input
type
="text"
name
="subtract2"
size
="10"
>
=
<
input
type
="text"
name
="subtract"
size
="10"
>
<
input
type
="button"
value
="求差"
onclick
="subtract();"
>
</
body
>
</
html
>
参考资料:
http://www.vcdn.org/Public/XMLRPC
http://blog.youkuaiyun.com/faust/archive/2005/11/14/529374.aspx
http://blog.youkuaiyun.com/fyun/archive/2004/05/17/6463.aspx
http://blog.youkuaiyun.com/mabaolin/archive/2007/08/20/1751006.aspx
本文介绍了一个使用Apache XML-RPC实现的简单计算器服务。该服务包括加法和减法两个功能,并通过HTTP Servlet提供接口。客户端则使用JavaScript进行调用,演示了如何从前端发起请求并展示结果。
446

被折叠的 条评论
为什么被折叠?



