安裝:
安裝很簡(jiǎn)單,首先當然是下載咯, http://www.coolcode.cn/?p=206 這里提供了3個(gè)下載地址,其中 CoolCode.CN 下載的始終是最新版本,Live-Share 上是特定的版本,Sf.net 上有所有發(fā)布的版本,不過(guò)只有 2.1-20060810 及其之后的版本才含有 PHPRPC for Java,所以,下載最新版本就可以了。
下載之后解壓縮,你會(huì )發(fā)現所有語(yǔ)言的版本都有,并且按目錄存放的,如果要用它作 Java 的 Ajax 編程,只需要 Java 版本和 js 版本就可以了。
首先要編譯 Java 版本,這里提供了兩種編譯方式,一種是直接使用 JDK 編譯,另一種是用 ant 編譯,這兩種編譯方式都很簡(jiǎn)單,如果沒(méi)有安裝 ant,但是配置好了 JDK 的運行環(huán)境的話(huà),直接進(jìn)入 java 目錄,鍵入 make 就可以編譯完成了,不過(guò)這種方式只能在 Windows 下編譯,因為沒(méi)有提供 Linux 版本的 shell 腳本。如果安裝了 ant 的話(huà),就用 ant 方式編譯,從命令行窗口進(jìn)入 java 目錄,鍵入 ant 就編譯完成了,編譯之后就會(huì )生成一個(gè) phprpc.jar 的包,這種方式生成的 jar 包比較小,在各種系統下都可以運行,不過(guò)需要安裝 ant,但我想用 Java 開(kāi)發(fā)程序的同志應該都會(huì )用 ant 的吧。
先說(shuō)如何建立一個(gè) JSP 的 PHPRPC 服務(wù)器。
首先在 Tomcat(或者其它 J2EE 服務(wù)器) 的發(fā)布目錄下,建立一個(gè) WEB-INF 目錄,在下面再建立一個(gè) lib 目錄,把 phprpc.jar 放在 lib 目錄中就可以了。然后在發(fā)布目錄下建立你要發(fā)布服務(wù)的 JSP 程序,文件名當然是任意的,這里我們就叫 server.jsp 吧:
<%@ page import="java.lang.*" %>
<%@ page import="org.phprpc.*" %>
<%
PHPRPCServer phprpc_server = new PHPRPCServer(request, response, session);
phprpc_server.add("min", Math.class);
phprpc_server.add(new String[] { "sin", "cos" }, Math.class);
phprpc_server.start();
%>
就這么簡(jiǎn)單,這樣就可以通過(guò) server.jsp 來(lái)把 java.lang.Math 類(lèi)的 min,sin,cos 方法發(fā)布給客戶(hù)端調用了。
如果你在瀏覽器里鍵入:http://localhost:8080/server.jsp ,回車(chē)之后看到:
phprpc_functions="YTozOntpOjA7czozOiJtaW4iO2k6MTtzOjM6InNpbiI7aToyO3M6MzoiY29zIjt9";
下面我們來(lái)看一下如何在 html 中用 js 調用這個(gè)服務(wù)。
首先把 js\compress\full 目錄下的 phprpc_client.js 包含到你的 html 頁(yè)面里來(lái),這個(gè)壓縮版本已經(jīng)包含了所有的依賴(lài)程序,所以,你可以單獨把它復制到任何目錄下使用。
下面來(lái)建立一個(gè) Html 頁(yè)面試試吧:
<html>
<head>
<script type="text/javascript" src="phprpc_client.js"></script>
</head>
<body>min(<input id="a" type="text" />, <input id="b" type="text" />)
<input id="minbtn" type="button" value="=" /> <input id="c" type="text" /><script type="text/javascript">
var a = document.getElementById("a");
var b = document.getElementById("b");
var c = document.getElementById("c");phprpc_client.create(‘rpc_client‘);
rpc_client.use_service("http://localhost:8080/server.jsp");
document.getElementById("minbtn").onclick= function() {
if (rpc_client.ready) {
c.value = "loading...";
rpc_client.min(Number(a.value), Number(b.value), function (result) {
c.value = result;
});
}
else {
alert("RPC not ready, wait a moment, please!");
}
}
</script>
</body>
</html>
DWR 使用 servlet 發(fā)布服務(wù),配置復雜。
PHPRPC for Java 可以直接使用 JSP 發(fā)布服務(wù)器,不需要任何配置文件的修改,配置簡(jiǎn)單。
DWR 的數據是明文傳輸,PHPRPC 內置加密傳輸機制,在調用時(shí),可以已加密方式傳輸數據,這對于編寫(xiě)安全的 Ajax 程序更方便。
DWR 只能用于瀏覽器到服務(wù)器的調用,PHPRPC 可以在瀏覽器中調用服務(wù)器上的服務(wù),還可以在任何的 Java 程序中調用服務(wù)器端的服務(wù)。還可以在 Java 程序中調用任何其它語(yǔ)言編寫(xiě)的 PHPRPC 服務(wù),還可以在任何其它語(yǔ)言的 PHPRPC 客戶(hù)端中調用 PHPRPC for Java 服務(wù)器發(fā)布的服務(wù)。這一點(diǎn) PHPRPC 更像 Web Service。但 PHPRPC 發(fā)布的服務(wù)程序不需要以任何特殊的方式編寫(xiě),即使系統的類(lèi)的方法都可以直接發(fā)布。
聯(lián)系客服