文出處:http://blog.chenlb.com/2009/02/phprpc-for-java-hello-world-demo.html
PHPRPC是面向服務的高性能遠程過程調用協議。PHPRPC for java 是此協議的一種實現,詳細請到官方看PHPRPC的介紹 ,以其它rpc協議的性能對比請:Java、PHPRPC、Hessian、Burlap、XML 序列化的效率對比 。我在這時只是試用下。
下載:PHPRPC 3.0.2 for Java , 解壓到(如:f:/phprpc_3.0.2_for_java),然后雙擊make.bat生成服務與客戶端,生成phprpc.jar和phprpc_client.jar兩個jar,把phprpc.jar放到web項目的WEB-INF/lib目錄下。
先寫個模擬業務接口:Hello.java接口與其實現MyHello.java
- package com.chenlb.phprpc;
- /**
- * 業務接口
- *
- * @author chenlb 2009-2-22 下午08:06:13
- */
- public interface Hello {
- String say(String name);
- }
- package com.chenlb.phprpc;
- /**
- * 服務器的一個模擬任務
- *
- * @author chenlb 2009-2-22 下午08:05:42
- */
- public class MyHello implements Hello {
- public String say(String name) {
- return "Hello "+name;
- }
- }
然后發布業務(被遠程調用的):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);
- %>
當然要把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"));
- //也可以以 callback形式調用.
- 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();
- }
- });
- }
- }
示例了兩種使用方式,輸出結果為:
Hello chenlb
handler:
Hello other
args:other
使用的確比較簡單??梢栽?javaeye 群組里與 PHPRPC 作者交流