PHPRPC是面向服務(wù)的高性能遠程過程調(diào)用協(xié)議。PHPRPC for java 是此協(xié)議的一種實現(xiàn),詳細請到官方看PHPRPC的介紹 ,以其它rpc協(xié)議的性能對比請:Java、PHPRPC、Hessian、Burlap、XML 序列化的效率對比 。我在這時只是試用下。
下載:PHPRPC 3.0.2 for Java , 解壓到(如:f:/phprpc_3.0.2_for_java),然后雙擊make.bat生成服務(wù)與客戶端,生成phprpc.jar和phprpc_client.jar兩個jar,把phprpc.jar放到web項目的WEB-INF/lib目錄下。
先寫個模擬業(yè)務(wù)接口:Hello.java接口與其實現(xiàn)MyHello.java
- package com.chenlb.phprpc;
-
-
-
-
-
-
- public interface Hello {
-
- String say(String name);
- }
package com.chenlb.phprpc;
/**
* 業(yè)務(wù)接口
*
* @author chenlb 2009-2-22 下午08:06:13
*/
public interface Hello {
String say(String name);
}
- package com.chenlb.phprpc;
-
-
-
-
-
-
- public class MyHello implements Hello {
-
- public String say(String name) {
- return "Hello "+name;
- }
- }
package com.chenlb.phprpc;
/**
* 服務(wù)器的一個模擬任務(wù)
*
* @author chenlb 2009-2-22 下午08:05:42
*/
public class MyHello implements Hello {
public String say(String name) {
return "Hello "+name;
}
}
然后發(fā)布業(yè)務(wù)(被遠程調(diào)用的):rpc.jsp
- <%@ page import="com.chenlb.phprpc.*" %>
- <%@ page import="org.phprpc.*" %>
- <%
- Hello hello = new MyHello();
- PHPRPC_Server phprpc_server = new PHPRPC_Server();
- phprpc_server.add(hello);
- phprpc_server.start(request, response);
- %>
<%@ page import="com.chenlb.phprpc.*" %>
<%@ page import="org.phprpc.*" %>
<%
Hello hello = new MyHello();
PHPRPC_Server phprpc_server = new PHPRPC_Server();
phprpc_server.add(hello);
phprpc_server.start(request, response);
%>
當然要把Hello.class與Myhello.class放到web項目里,如WEB-INF/classes。
編寫java客戶端代碼,試用:
- package com.chenlb.phprpc;
-
- import org.phprpc.PHPRPC_Callback;
- import org.phprpc.PHPRPC_Client;
-
- public class PhpRpcDemo {
-
- public static void main(String[] args) {
- PHPRPC_Client client = new PHPRPC_Client("http://localhost:8080/phprpc/rpc.jsp");
- Hello m = (Hello) client.useService(Hello.class);
- System.out.println(m.say("chenlb"));
-
-
- client.invoke("say", new Object[] {"other"}, new PHPRPC_Callback() {
- public void handler(String result, Object[] args) {
- System.out.println("handler:");
- System.out.println(result);
- System.out.println("args:"+args[0]);
- System.out.println();
- }
- });
- }
- }
package com.chenlb.phprpc;
import org.phprpc.PHPRPC_Callback;
import org.phprpc.PHPRPC_Client;
public class PhpRpcDemo {
public static void main(String[] args) {
PHPRPC_Client client = new PHPRPC_Client("http://localhost:8080/phprpc/rpc.jsp");
Hello m = (Hello) client.useService(Hello.class);
System.out.println(m.say("chenlb"));
//也可以以 callback形式調(diào)用.
client.invoke("say", new Object[] {"other"}, new PHPRPC_Callback() {
public void handler(String result, Object[] args) {
System.out.println("handler:");
System.out.println(result);
System.out.println("args:"+args[0]);
System.out.println();
}
});
}
}
示例了兩種使用方式,輸出結(jié)果為:
Hello chenlb
handler:
Hello other
args:other
使用的確比較簡單。可以在 javaeye 群組里與 PHPRPC 作者交流