瘋狂

          STANDING ON THE SHOULDERS OF GIANTS
          posts - 481, comments - 486, trackbacks - 0, articles - 1
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          PHPRPC

          Posted on 2010-01-19 16:33 瘋狂 閱讀(2971) 評論(0)  編輯  收藏 所屬分類: java 、webservice
          文出處: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

          1. package com.chenlb.phprpc;   
          2.   
          3. /**  
          4.  * 業務接口  
          5.  *  
          6.  * @author chenlb 2009-2-22 下午08:06:13  
          7.  */  
          8. public interface Hello {   
          9.   
          10.     String say(String name);   
          11. }  
          1. package com.chenlb.phprpc;   
          2.   
          3. /**  
          4.  * 服務器的一個模擬任務  
          5.  *  
          6.  * @author chenlb 2009-2-22 下午08:05:42  
          7.  */  
          8. public class MyHello implements Hello {   
          9.   
          10.     public String say(String name) {   
          11.         return "Hello "+name;   
          12.     }   
          13. }  

          然后發布業務(被遠程調用的):rpc.jsp

          1. <%@ page import="com.chenlb.phprpc.*" %>   
          2. <%@ page import="org.phprpc.*" %>   
          3. <%   
          4. Hello hello = new MyHello();   
          5. PHPRPC_Server phprpc_server = new PHPRPC_Server();   
          6. phprpc_server.add(hello);   
          7. phprpc_server.start(request, response);   
          8. %>  

          當然要把Hello.class與Myhello.class放到web項目里,如WEB-INF/classes。

          編寫java客戶端代碼,試用:

          1. package com.chenlb.phprpc;   
          2.   
          3. import org.phprpc.PHPRPC_Callback;   
          4. import org.phprpc.PHPRPC_Client;   
          5.   
          6. public class PhpRpcDemo {   
          7.   
          8.     public static void main(String[] args) {   
          9.         PHPRPC_Client client = new PHPRPC_Client("http://localhost:8080/phprpc/rpc.jsp");   
          10.         Hello m = (Hello) client.useService(Hello.class);   
          11.         System.out.println(m.say("chenlb"));   
          12.   
          13.         //也可以以 callback形式調用.   
          14.         client.invoke("say"new Object[] {"other"}, new PHPRPC_Callback() {   
          15.             public void handler(String result, Object[] args) {   
          16.                 System.out.println("handler:");   
          17.                 System.out.println(result);   
          18.                 System.out.println("args:"+args[0]);   
          19.                 System.out.println();   
          20.             }   
          21.         });   
          22.     }   
          23. }  

          示例了兩種使用方式,輸出結果為:

          Hello chenlb
          handler:
          Hello other
          args:other

          使用的確比較簡單??梢栽?javaeye 群組里與 PHPRPC 作者交流

          主站蜘蛛池模板: 沛县| 黄梅县| 天镇县| 秭归县| 当阳市| 无为县| 竹北市| 株洲市| 伊通| 五大连池市| 昭苏县| 廉江市| 大冶市| 通海县| 东乡| 逊克县| 社旗县| 遂平县| 南汇区| 南开区| 南宫市| 康乐县| 四川省| 新化县| 唐海县| 上思县| 连江县| 邢台市| 古丈县| 酉阳| 吉安县| 富裕县| 若尔盖县| 岚皋县| 芜湖县| 修文县| 昂仁县| 宁河县| 大兴区| 娱乐| 仪征市|