疯狂

STANDING ON THE SHOULDERS OF GIANTS
posts - 481, comments - 486, trackbacks - 0, articles - 1
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

PHPRPC

Posted on 2010-01-19 16:33 疯狂 阅读(2957) 评论(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 作者交流


只有注册用户登录后才能发表评论。


网站导航: