轻量级 js2java rpc 框架发布 -凯发k8国际

5顶
0踩

轻量级 js2java rpc 框架发布

2011-08-19 10:04 by 见习记者 jxpath 评论(8) 有13216人浏览
1. 相关介绍:

1.1 是什么

是一个基于flash、java、js架构设计的超轻量级rpc框架。

1.2 特点是什么

1、js2java rpc:能够在javascript的web浏览器环境中指定java类,获取该类实例的属性,调用该实例的方法

2、支持复杂js对象作为入参:能够传递复杂的javascript object对象作为调用参数,在java中得到对应的map对象

3、自动压缩、解压传递的数据:调用过程中传递的数据自动进行压缩传输,后台自动解压,然后转换为map给开发人员;因此从一定层面上保护、加密了传输的数据

4、js回调函数中能够接收java返回的复杂对象:java中可以返回复杂的对象,比如map、list,在javascript中对应为object和array

5、友好逐行数据输出并回调:java中可以将list逐行输出到浏览器中,框架每接收到一条数据,能够自动回调给定的javascript方法,从而实现数据流的逐行输出;该接口继承与“com.ibatis.sqlmap.client.event.rowhandler”因此很容易将ibatis的数据流逐行输出给浏览器,从而实现非常友好的数据加载方式

6、支持回调全异步(观察者模式):所有的过程调用都采用异步方式,可以指定回调函数,用来接收返回的对象,并进行其他处理

7、日志回调:l异步过程可以设置日志回调函数,让你掌控全过程

1.3 包含什么

包含:
xtzpstream.swf:v1.0:25kb,flash文件
xtzpstream_1.0.jar:655 kb,java服务端jar
xtzpstream.js:3.69 kb,
jsp中使用的代码片段:未压缩,大约2.61 kb

1.4 应该注意什么

xtzpstream和json-rpc-for-java都要求utf-8字符集---js代码

1.5 下载地址是什么



1.6 依赖什么

依赖的jar【2.36 mb】:
backport-util-concurrent.jar
commons-httpclient-3.0.1.jar
jgroups.jar

2 web.xml配置

仅仅需要在web.xml中配置,http://code.google.com/p/json-rpc-for-java/上的两个rpc框架都是,只需要简单的配置.
xtzpstream 在web.xml中的配置:

    
        commonhttpservlet
        
    com.rmuzwqqryqmyyvft1de0fat7jwvjj3ja.commonhttpservlet
        
        3
    
    
        commonhttpservlet
        /cmhs
    


3 如何使用

3.1 java

package com.rmuzwqqryqmyyvft1de0fat7jwvjj3ja;
import java.util.arraylist;
import java.util.list;
import java.util.map;
public class test {
   /**
    * 一般对象
    * @param m
    * @return
    */
   public object mycbktest(map m)
   {
     list lst = new arraylist();
     lst.add(new string[]{"牧仁", "之", "数据压缩传输", "创新"});
     lst.add(new int[]{1,1,6,0,2,0,1,1});
     return lst;
   }
   
   /**
    * 行流方式
    * @param m
    * @param cbk
    * @throws exception
    */
   public void mycbktestrow(map m, irowhandler cbk) throws exception
   {
     list lst = new arraylist();
     lst.add(new string[]{"牧仁2", "之", "数据压缩传输", "创新"});
     lst.add(new int[]{1,1,6,0,2,0,1,1});
     if(null != cbk)
     for(int i = 0; i < lst.size(); i  )
        cbk.handlerow(lst.get(i));
   }
   /**
    * @param args
    */
   public static void main(string[] args) {
     system.out.println(new objecttojson(new test()).tojson());
   }
}


3.2 jsp

<%@ page  pageencoding="utf-8"%>
<%
    string path = request.getcontextpath();
    string basepath = request.getscheme()   "://"
              request.getservername()   ":"   request.getserverport()
              path   "/";
%>
xtzpstream框架使用演示(demo)

       




3.3 js api

// 指定上下文路径,必须的,没有的上下文的时候就是空串""
var contextpath = "<%=path%>";
var xtzps = xtzpstream(contextpath);


1、xtzps.nextid(); // 生成一个唯一的字符串id

2、xtzps.getrpcobj(s,mycbk);
-------------------------------------------------------------
s        类名,例如:"com.rmuzwqqryqmyyvft1de0fat7jwvjj3ja.test"
-------------------------------------------------------------
mycbk  回调函数,有一个入参,是指定类转换为js的对象,例如:
    
 function(o)
            {
                /*//////和下面的方法效果一样/////////
                o.mycbktest({data:"表单数据"}, function(p)
                {
                    for(var k in p)alert(k   " = "   p[k]);
                });
                /////////////////////////*/
                test.mycbktest({data:"表单数据"}, function(p)
                {
                    for(var k in p)alert(k   " = "   p[k]);
                });
            }


3、xtzps.readstm(o, fncbk, ctx);
-------------------------------------------------------------
o    传递到后台的复杂js对象,例如:
{ name:"牧仁", 
                    qq:11602011, 
                    age:"9zb",
                    a: {b:[1234,34,33,34]},  /* 复杂对象传递测试*/
                    /* 回调java方法,并返回结果,入口参数为: public object mycbktest(map m) */
                    xtstreamcbk: "com.rmuzwqqryqmyyvft1de0fat7jwvjj3ja.test.mycbktest" 
                   }


xtstreamcbk用于指定要回调的java类名:(com.rmuzwqqryqmyyvft1de0fat7jwvjj3ja.test)和方法(mycbktest)
其中方法定义、入参要求是:

// 入参要去是map
public object mycbktest(map m)
{
     list lst = new arraylist();
     lst.add(new string[]{"牧仁", "之", "数据压缩传输", "创新"});
     lst.add(new int[]{1,1,6,0,2,0,1,1});
     return lst;
}


另外:

/* 回调java方法,并返回结果,入口参数为: public void mycbktestrow(map m, irowhandler cbk) throws exception */
xtstreamcbkrow: "com.rmuzwqqryqmyyvft1de0fat7jwvjj3ja.test.mycbktestrow"
用来指定基于流的方式输出行流对象,并逐行回调js方法,方法的定义要求:

   public void mycbktestrow(map m, com.rmuzwqqryqmyyvft1de0fat7jwvjj3ja.irowhandler cbk) throws exception
   {
     list lst = new arraylist();
     lst.add(new string[]{"牧仁2", "之", "数据压缩传输", "创新"});
     lst.add(new int[]{1,1,6,0,2,0,1,1});
     if(null != cbk)
     for(int i = 0; i < lst.size(); i  )
        cbk.handlerow(lst.get(i));// 这里逐行输出数据
   }

-------------------------------------------------------------
fncbk  回调函数,具有一个入口参数,是异步返回的对象,例如:
var k, cbk = function(o)
        {
            o || (o = {});
            var k;
            for(k in o)
               alert(k   " = "   o[k]);
        };

-------------------------------------------------------------
ctx 当前应用上下文路径,没有时为"",例如:var ctx = "<%=request.getcontextpath()%>";

项目网站

下载地址
  • (2.9 mb)
  • 下载次数: 73
5
0
评论 共 8 条 请登录后发表评论
8 楼 jxpath 2012-05-09 16:00
kingsfighter 写道
不错,不过和dwr比起来,有什么优势?应该把亮点都列出来。

优势:数据压缩传输,尤其是后台返回list数据,是经过压缩后,下载效率就非常高了,例如应用开发中1000~n条数据的加载

j5321594 写道
能不能 不要每次把页面的输入 标签的值提交到后台? 项目是个单页的大量的输入标签都被隐藏着,每次都会提交大量无用数据给后台。

肯定可以指定定特定的参数传递了
7 楼 2012-02-17 08:46
跟dwr有什么区别呢?即使有区别,那点区别意义在哪呢?
6 楼 2011-12-14 18:19
能不能 不要每次把页面的输入 标签的值提交到后台? 项目是个单页的大量的输入标签都被隐藏着,每次都会提交大量无用数据给后台。
5 楼 2011-08-21 15:10
搞不懂什么趋势啊这是。。。。
4 楼 2011-08-19 17:10
比dwr的优势在哪 没有说明
3 楼 jxpath 2011-08-19 12:33
据传:
引用
1、数据传输压缩、自动解压

2、不要注册使用的java类

3、支持数据流传输

2 楼 2011-08-19 10:44
flash js jsp java ?很好奇,研究下
1 楼 2011-08-19 10:43
不错,不过和dwr比起来,有什么优势?应该把亮点都列出来。

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 去中心化自动组网,充分利用内结点互相发现相互通信开发中js脚本开发支持因素dfactor是一个基于actor模型的消息处理框架,充分利用多核处理器,平衡业务负载,可参考erlang dfactor使用java编写,天生多平台支持,...

  • 1. 相关介绍: ...是一个基于flash、java、js架构设计的超轻量级rpc框架。 1.2 特点是什么 1、js2java rpc:能够在javascript的web浏览器环境中指定java类,获取该类实例的属性,调用该实例的方法

  • java 轻量rpc框架 重要要点 http-rpc是一个轻量级的开源框架,用于使用rpc隐喻开发restful应用程序 提供服务器和客户端api 支持多种操作系统和设备 支持多种语言,包括java,objective-c / swift和...

  • 1.hessian简介hessian是一个轻量级的远程http工具,采用binaray rpc协议,适合发送二进制数据,同时具有防火墙穿透能力,hessian一般通过web应用来提供服务。...

  • solon 是一个轻量级应用开发框架。支持 web、data、job、remoting、cloud 等任何开发场景。短小而精悍! 强调,克制 简洁 开放的原则 力求,更小、更快、更自由的体验 关于 solon cloud solon cloud 定义了一...

  • 仅不到100行的javascript代码和不到10个java文件实现的超轻量级的通过javascript快速调用java对象并返回任意对象的轻量级框架,和支持级联调用,而无需额外javascript编程,就可以通过javascript调用被注册的java...

  • 笔者工作也有些时间了,在某互联网一二线场都工作过,当时在某二线厂工作时,部门自研了rpc框架,用来支撑部门c端产品业务开发,当时一直想自己也要写一个rpc框架,但由于一直没有时间,这个想法隔着了很久。...

  • rpc(remote procedure call)即远程过程调用,不同于本地调用,rpc是指调用远端机器的函数或方法,且不需要关心底层的调用细节,如网络协议和传输协议等,对于调用者来说,和调用本地方法没有什么区别。

  • 核心要点\http-rpc是一个开发restful应用的轻量级开源框架,同时符合rpc隐喻的做法; \提供了服务端和客户端的api; \支持各种操作系统和设备; \支持多种语言,包括java、objective-c/swift和javascript。http-rpc...

  • rpc、grpc、thrift、http,大家知道它们之间的联系和区别么?...rpc 框架负责屏蔽底层的传输方式(tcp 或者 udp)、序列化方式(xml/json/ 二进制)和通信细节,服务调用者可以像调用本地接口一样调用远程

  • 如果想要解决这两方面问题,你需要了解,微服务化所需要的中间件的基本原理,和使用技巧,那么本节课,我会带你掌握,解决第一点问题的核心组件:rpc 框架。 你的垂直电商系统的 qps 已经达到了每秒 2 万次,在做了...

  • smart framework:轻量级 java web 框架 收藏 黄勇 工作闲暇之余,我开发了一款轻量级 java web 框架 ——smartframework。 开发该框架是为了: 加速基于 java 的中小型...

  • rpc技术简单说就是为了解决远程调用服务 的一种技术,使得调用者像调用本地服务一样方便透明 thrift的定义   thrift是一个轻量级、跨语言的rpc框架,主要用于各个服务之间的rpc通信,最初由facebook于2007 年开发...

  • rpc框架:10万qps下如何实现毫秒级的服务调用?rpc如何提升网络传输性能选择合适的序列化方式总结: 我们已经决定对系统做服务化拆分,以便解决扩展性和研发成本高的问题。与此同时,我们在不断学习的过程中还发现,...

  • rpc 2.0 specification》的 .net 实现, 它是基于 http (也能支持本地调用和tcp)方式实现的轻量级松耦合的远程调用服务框架,提供了高效可用、无侵入式的方式搭建自己的服务平台,可以快速开发、调试、发布、调用...

  • 目前轻量级开发技术非常多,适用的场景也各有不同,比如我们熟知的php、asp .net(asp 和sap .net不是一个东西,二者编程思想都不一样)他们适用于中小型web开发,尤其php非常适合开发web站点。java非常适合大型和...

  • 管理系统是一种通过计算机技术实现的用于组织、监控和控制各种活动的软件系统。这些系统通常被设计用来提高效率、减少错误、加强安全性,同时提供数据和信息支持。以下是一些常见类型的管理系统: 学校管理系统: 用于学校或教育机构的学生信息、教职员工信息、课程管理、成绩记录、考勤管理等。学校管理系统帮助提高学校的组织效率和信息管理水平。 人力资源管理系统(hrm): 用于处理组织内的人事信息,包括员工招聘、培训记录、薪资管理、绩效评估等。hrm系统有助于企业更有效地管理人力资源,提高员工的工作效率和满意度。 库存管理系统: 用于追踪和管理商品或原材料的库存。这种系统可以帮助企业避免库存过剩或不足的问题,提高供应链的效率。 客户关系管理系统(crm): 用于管理与客户之间的关系,包括客户信息、沟通记录、销售机会跟踪等。crm系统有助于企业更好地理解客户需求,提高客户满意度和保留率。 医院管理系统: 用于管理医院或医疗机构的患者信息、医生排班、药品库存等。这种系统可以提高医疗服务的质量和效率。 财务管理系统: 用于记录和管理组织的财务信息,包括会计凭证、财务报表、预算管理等。财务管理系统

  • gb2312字符集 作用:国家简体中文字符集,兼容ascii。 位数:使用2个字节表示,能表示7445个符号,包括6763个汉字,几乎覆盖所有高频率汉字。 范围:高字节从a1到f7, 低字节从a1到fe。将高字节和低字节分别加上0xa0即可得到编码。 gbk字符集 作用:它是gb2312的扩展,加入对繁体字的支持,兼容gb2312。 位数:使用2个字节表示,可表示21886个字符。 范围:高字节从81到fe,低字节从40到fe。 gb18030字符集 作用:它解决了中文、日文、朝鲜语等的编码,兼容gbk。 位数:它采用变字节表示(1 ascii,2,4字节)。可表示27484个文字。 范围:1字节从00到7f; 2字节高字节从81到fe,低字节从40到7e和80到fe;4字节第一三字节从81到fe,第二四字节从30到39。

  • 毕业设计,安卓app,基于java开发的学生成绩课件管理系统app,包括pc端和安卓anroid手机app,内含java完整源码 安卓andriod学生成绩课件管理系统 系统开发环境: windows myclipse(服务器端) eclipse(手机客户端) mysql数据库 服务器也可以用eclipse或者idea等工具,客户端也可以采用android studio工具! 系统客户端和服务器端架构技术: 界面层,业务逻辑层,数据层3层分离技术,mvc设计思想! 服务器和客户端数据通信格式:json格式,采用servlet方式 【服务器端采用ssh框架,请自己启动tomcat服务器,hibernate会自动生成数据库表的哈!】 hibernate生成数据库表后,只需要在admin管理员表中加个测试账号密码就可以登录后台了哈! 下面是数据库的字段说明: 班级: 班级编号,班级名称,开办日期,班主任 学生: 学号,登录密码,所在班级,姓名,性别,出生日期,学生照片,联系电话,家庭地址 老师: 教师编号,登录密码,姓名,性别,出生日期,联系电话,邮件,地址,

  • 管理系统是一种通过计算机技术实现的用于组织、监控和控制各种活动的软件系统。这些系统通常被设计用来提高效率、减少错误、加强安全性,同时提供数据和信息支持。以下是一些常见类型的管理系统: 学校管理系统: 用于学校或教育机构的学生信息、教职员工信息、课程管理、成绩记录、考勤管理等。学校管理系统帮助提高学校的组织效率和信息管理水平。 人力资源管理系统(hrm): 用于处理组织内的人事信息,包括员工招聘、培训记录、薪资管理、绩效评估等。hrm系统有助于企业更有效地管理人力资源,提高员工的工作效率和满意度。 库存管理系统: 用于追踪和管理商品或原材料的库存。这种系统可以帮助企业避免库存过剩或不足的问题,提高供应链的效率。 客户关系管理系统(crm): 用于管理与客户之间的关系,包括客户信息、沟通记录、销售机会跟踪等。crm系统有助于企业更好地理解客户需求,提高客户满意度和保留率。 医院管理系统: 用于管理医院或医疗机构的患者信息、医生排班、药品库存等。这种系统可以提高医疗服务的质量和效率。 财务管理系统: 用于记录和管理组织的财务信息,包括会计凭证、财务报表、预算管理等。财务管理系统

global site tag (gtag.js) - google analytics
网站地图