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. * @author chenlb 2009-2-22 下午08:06:13
  6. */
  7. public interface Hello {
  8. String say(String name);
  9. }
  1. package com.chenlb.phprpc;
  2. /**
  3. * 服务器的一个模拟任务
  4. *
  5. * @author chenlb 2009-2-22 下午08:05:42
  6. */
  7. public class MyHello implements Hello {
  8. public String say(String name) {
  9. return "Hello "+name;
  10. }
  11. }

服务端然后发布业务(被远程调用的):rpc.jsp,也可以用servlet发布服务

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

示例了两种使用方式,输出结果为:

Hello chenlb
handler:
Hello other
args:other

PHPRPC jsp发布服务的更多相关文章

  1. PHPRPC servlet发布服务

    1.服务端 web.xml PHPRPCDispacherServlet 2.客户端 controller层调用

  2. 13_CXF和Spring整合发布服务

    [服务端] 第一步:建立一个Web项目 第二步:填充CXF jar包 第三步:创建接口及服务类 [工程截图(对比之前的WebService_CXF_Server00)] [applicationCon ...

  3. SAP PI开发手册-ERP发布服务供外围系统调用(RFC类型)

    1转自:https://www.cnblogs.com/fanjb/p/10677018.html 8年进入国网项目后陆陆续续做了一些接口,按实现方法去分有RFC和代理类sproxy类型,按服务提供方 ...

  4. ServiceStack.Redis订阅发布服务的调用(Z)

      1.Redis订阅发布介绍Redis订阅发布是一种消息通信模式:发布者(publisher)发送消息,订阅者(Subscriber)接受消息.类似于设计模式中的观察者模式.发布者和订阅者之间使用频 ...

  5. ArcGIS Server开发教程系列(2)配置ARCMAP和ARCCatalog发布服务

    1.       Arc catalog的配置 打开catalog,如图新增刚刚创建的server 1. Use GIS services: 用户身份连接 使用此种连接,可以浏览.使用站点内发布的所有 ...

  6. ServiceStack.Redis订阅发布服务的调用

    1.Redis订阅发布介绍 Redis订阅发布是一种消息通信模式:发布者(publisher)发送消息,订阅者(Subscriber)接受消息.类似于设计模式中的观察者模式. 发布者和订阅者之间使用频 ...

  7. jsp作为服务端,ajax请求回应

    刚学ajax,想以jsp作为服务端,来回应ajax的请求: 代码如下: <!DOCTYPE html> <html> <head lang="en"& ...

  8. jsp发布:Could not publish server configuration: null. java.lang.NullPointerException

    1.jsp发布: Could not publish server configuration: null. java.lang.NullPointerException

  9. ArcGIS发布服务时缓存切片设置

    [文件]>[共享]>[服务]>[覆盖原有服务]或[创建新服务] 设置好相关参数后,会弹出"服务编辑框": 进入"缓存" 1."绘制此 ...

随机推荐

  1. [翻译]Understanding Weak References(理解弱引用)

    原文 Understanding Weak References Posted by enicholas on May 4, 2006 at 5:06 PM PDT 译文 我面试的这几个人怎么这么渣啊 ...

  2. 【 D3.js 入门系列 --- 2 】 如何使用数据和选择元素

    接着上一讲的内容,这次讨论如何选择元素和使用数据.    现在页面中有三行文字,代码为: <p>Hello World 1</p> <p>Hello World 2 ...

  3. Nginx-Lua重定向系列

    Ningx Lua模块官方文档: 在Nginx中实现重定向可以通过rewrite指令,具体可参考<Nginx学习--http_rewrite_module的rewrite指令> 通过Lua ...

  4. Docker 安装及命令

    CentOS 安装 通过脚本安装:curl -sSL https://get.docker.com/ | sh通过yum安装:yum install docker-engine============ ...

  5. Nim游戏变种——取纽扣游戏

    (2017腾讯实习生校招笔试题)Calvin和David正在玩取纽扣游戏,桌上一共有16个纽扣,两人轮流来取纽扣,每人每次可以选择取1个或3个或6个(不允许不取),谁取完最后的纽扣谁赢.Cavin和D ...

  6. DB2导出脚本,重新建立数据库

    在做项目的时候,我们经常会涉及到数据库的迁移 所以我们需要导出 db2数据的建库脚本,存储过程脚本,函数脚本, 我是这么做的 windows键---cmd---进入命令-----db2cmd----进 ...

  7. 6、java中的构造代码块

    /* 演示构造代码块的应用 */ class Person { String name; int age; //构造代码块 { cry(); } Person(String name, int age ...

  8. Eclipse 配置Activiti插件

    Eclipse 配置Activiti插件 我使用的是Eclipse LUNA 4.4.0 点击Eclipse上方工具栏[Help]选择[Install New Software] 在弹出的窗口点击[A ...

  9. 外联css及js的使用

    结构图如下: html如下: <!DOCTYPE html> <html> <head> <title>button test</title> ...

  10. FCKeditor 2.6.4.1 初始化值不能显示中文问题

    最近在学习PHP加入FCKeditor 在线编辑器,发现在初始化Value赋值时,英文可以显示出来,中文怎么都显示不出来,连乱码都不显示. 经过漫长的探索,终于找到原因了! 在fckeditor目录下 ...