PHPRPC jsp发布服务

   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,也可以用servlet发布服务

 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

原文地址:https://www.cnblogs.com/huqianliang/p/5672590.html