调用DATASNAP+FIREDAC的远程方法有时会执行二次SQL或存储过程的BUG 1)查询会重复执行的情形:Result := DATASETPROVIDER.Data会触发它关联的DATASET执行一次查询fdquery.Close;fdquery.sql.Clear;fdquery.sql.Text := sql;// d.qryOpen.Open; // 此行代码必须被注释掉,否则SQL会被二次执行Result := DATASETPROVIDER.Data; // 此行又会触发一次f…
前面的博客提到用FIREDAC全面替代COM那一套东西:DATAPROVIDER,OLEVARIANT,CLIENTDATASET,DBEXPRESS... 显然,DATASNAP的远程方法必须增加对FIREDAC数据集直接序列的参数类型. 从XE5的UPDATE2开始增加一个新的单元文件:Data.FireDACJSONReflect TFDJSONDataSets是一个数据集列表对象,顾名思义可以返回一个或多个数据集对象,不论是单表或者主从表数据都可传递. 服务端演示代码: function…
idhttp.get方式调用,这种比较简单,大家都会.post方式网上却没有任何成功的代码,本人也是摸索了一个上午才搞定. 分享给大家. (1)post方式调用的远程方法,方法名必须加“update”前缀,不加行不?你试下啦. function TServerMethods1.updateecho(const value: String): String;begin Result := value;end; (2)客户端调用,参数必须是JSON格式的字符串. 客户端POST方式调用时,远程方法名…
idhttp.get方式调用,这种比较简单,大家都会.post方式网上却没有任何成功的代码,本人也是摸索了一个上午才搞定. 分享给大家. (1)post方式调用的远程方法,方法名必须加“update”前缀,不加行不?你试下啦. function TServerMethods1.updateecho(const value: String): String;beginResult := value;end; (2)客户端调用,参数必须是JSON格式的字符串. 客户端POST方式调用时,远程方法名必…
服务端使用FDQUERY查询数据并返回TDATASET: function TServerMethods1.GetData(var sql: string): tdataset;begin qry.Close; qry.Open(sql); Result := TFDMemTable.Create(nil); TFDMemTable(Result).Data := qry.Data;end; 客户端用FDCONNECTION连接中间件,FDStoredProc访问远程方法: procedure…
论DATASNAP远程方法支持自定义对象作参数 DATASNAP远程方法已经可以支持自定义对象作参数,这是非常方便的功能. 1)自定义对象 type TMyInfo = class(TObject) public AccountNo: string; SQL: string; Params: string; end; 2)远程方法定义 function TServerMethods1.QuerySql4(const myInfo: TMyInfo): TFDJSONDataSets;var d:…
有同仁需要远程方法传输自定义的数据类型,他以为要自己写代码会很复杂,其实DATASNAP早就为我们想到了. datasnap的数据序列和还原真是无与伦比的强大,其远程方法支持自定义对象传参,DATASNAP会自动使用JSON序列和还原自定义的对象. 1)自定义一个对象 type TMyInfo = class(TObject) public AccountNo: string; SQL: string; Params: string; RecsMax: Integer; end; 2)服务端远程…
论DATASNAP结合FIREDAC的使用方法 自DELPHI XE5开始引入FIREDAC数据引擎以来,FIREDAC就正式成为了官方的数据引擎.一直到XE10.1 UPDATE1,据笔者观察,FIREDAC都是新版本开发当中的重中之重,其在DELPHI的地位自然是不言而喻. DATASNAP结合FIREDAC,中间件远程方法支持的数据序列格式可谓是丰富多彩.已经不仅仅是只支持OLEVARIANT格式序列.下面且听本人一一道来. 1)OLEVARIANT仍然得到继续支持,这使得成千上万的老程序…
一.简介 XML-RPC的全称是XML Remote Procedure Call,即XML远程方法调用. 它是一套允许运行在不同操作系统.不同环境的程序实现基于Internet过程调用的规范和一系列的实现. 这种远程过程调用使用http作为传输协议,XML作为传送信息的编码格式. XML-RPC的定义尽可能的保持了简单,但同时能够传送.处理.返回复杂的数据结构. XML-RPC是使用HTTP协议做为传输协议的RPC(远程方法调用)机制,使用XML文本的方式传输命令和数据. 一个RPC系统,必然…
Java RMI 指的是远程方法调用 (Remote Method Invocation).它是一种机制,能够让在某个 Java 虚拟机上的对象调用另一个 Java 虚拟机中的对象上的方法.可以用此方法调用的任何对象必须实现该远程接口.   Java RMI不是什么新技术(在Java1.1的时代都有了),但却是是非常重要的底层技术. 大名鼎鼎的EJB都是建立在rmi基础之上的,现在还有一些开源的远程调用组件,其底层技术也是rmi.   在大力鼓吹Web Service.SOA的时代,是不是每个应…
群里有位同仁提出他有一个DATASNAP远程方法超过了32个参数,然后DELPHI编译通不过,提示方法参数不能超过32个,问怎么办?于是群内同仁纷纷出主意,我说用OLEVARINAT数组,有人说用RECORD,我又说别说用RECORD,连自定义的类也是可以的.于是我想到了实现,用SUPEROBJECT序列RECORD或者CLASS为JSON的字符串挺方便的,中间件收到客户端传来的JSON字符串再还原为RECORD或者CLASS.   unit Unit1;   interface   uses…
Java远程方法调用,即Java RMI(Java Remote Method Invocation)是Java编程语言里,一种用于实现远程过程调用的应用程序编程接口.它使客户机上运行的程序可以调用远程服务器上的对象.远程方法调用特性使Java编程人员能够在网络环境中分布操作.RMI全部的宗旨就是尽可能简化远程接口对象的使用. Java RMI极大地依赖于接口.在需要创建一个远程对象的时候,程序员通过传递一个接口来隐藏底层的实现细节.客户端得到的远程对象句柄正好与本地的根代码连接,由后者负责透过…
一.Java RMI定义 Java RMI:Java远程方法调用,即Java RMI(Java Remote Method Invocation)是Java编程语言里,一种用于实现远程过程调用的应用程序编程接口.它使客户机上运行的程序可以调用远程服务器上的对象.远程方法调用特性使Java编程人员能够在网络环境中分布操作.RMI全部的宗旨就是尽可能简化远程接口对象的使用. 二.Java RMI工作原理 RMI能让一个Java程序去调用网络中另一台计算机的Java对象的方法,那么调用的效果就像是在本…
一.RMI简介: 说到RMI就不得不说RPC了. RPC:(Remote Procedure Call),远程过程调用. RMI(Remote Method Invocation),远程方法调用. RPC和RMI是有区别的,RPC中是通过网络服务协议向远程主机发送请求,RPC远程主机就去搜索与之相匹配的类和方法,找到后就执行方法并把结果编码,通过网络协议发回. 而RMI是通过客户端的对象作为远程接口进行远程方法的调用.RMI只适用于Java语言. 二.RMI的运行机理: 涉及两个网络端.其核心思…
DATASNAP远程方法返回TSTREAM正解 DATASNAP远程方法返回TSTREAM,如果数据大小超过32K是会报错的.许多DELPHIER栽在这个上头,甚至开始怀疑TSTREAM返回数据的可行性. 因为DATASNAP远程方法返回TSTREAM,数据包大小有最大32K限制. 怎么解决?客户端要做并包处理. function CopyStream(const AStream: TStream): TMemoryStream; const LBufSize = $F000; var LBuf…
DATASNAP远程方法返回TSTREAM正解 DATASNAP远程方法返回TSTREAM,如果数据大小超过32K是会报错的.许多DELPHIER栽在这个上头,甚至开始怀疑TSTREAM返回数据的可行性. 因为DATASNAP远程方法返回TSTREAM,数据包大小有最大32K限制. 怎么解决?客户端要做并包处理. function CopyStream(const AStream: TStream): TMemoryStream;const LBufSize = $F000;var LBuffe…
RMI远程方法调用:适用于 客户端 调用 服务器 内的方法:(Kotlin 语言编写) 如果业务为二个服务器之间的通信,还是得用消息队列的形式,因为RMI 不适合 双向 调用 下面介绍RMI 的使用方法: 1,服务器端代码: 定义接口(此接口放入服务端和客户端公用的模块 或者打成jar给服务器/客户端使用) interface RmiService { /** * 订单发货 * @param saleItemId BTB订单项 itemId * @param shipmentName 物流公司名…
Java RMI 远程方法调用Remote Method Invocation 转载:http://www.cnblogs.com/yangchongxing/p/9078061.html 1.创建远程方法接口(必须继承自java.rmi.Remote接口) package cn.ycx.date; import java.rmi.Remote; import java.rmi.RemoteException; public interface DateRemote extends Remote…
一.什么是RPC RPC全称是remote procedure call,即远程过程调用.它是一种协议,用于从远程计算机上请求服务. 例如有两台服务器A和B,A上的应用想要调用B上应用的方法,但是他们在不同的服务器,所以不能通过内存调用的方式,所以我们理所当然地去考虑通过网络来实现函数调用.RPC也就是能够实现A上的应用能够直接调用B上应用的方法的协议. 注:RPC和HTTP的不同点主要是在于针对使用场景而形成的不同特性,RPC协议主要应用于服务器的内部,也针对服务而形成如错误重试.服务发现等特…
Java远程方法协议(英语:Java Remote Method Protocol,JRMP)是特定于Java技术的.用于查找和引用远程对象的协议.这是运行在Java远程方法调用(RMI)之下.TCP/IP之上的线路层协议. JRMP是一个Java特有的.适用于Java之间远程调用的基于流的协议,要求客户端和服务器上都使用Java对象.…
为了方便原来D6,D7开发的二层老程序升级为三层,新增了远程方法QuerySql6().充分地兼容原来二层SQL的写法. 1)公共方法ParamsToStr() function ParamsToStr(params: TParams): string;var i: Integer; p: TParam;begin Result := ''; if params = nil then Exit; for i := 0 to params.Count - 1 do begin p := param…
[转][原文]  1.如果父类构造器调用了被子类重写的方法,且通过子类构造函数创建子类对象,调用了这个父类构造器(无论显示还是隐式),就会导致父类在构造时实际上调用的是子类覆盖的方法(你需要了解java继承中的初始化机制). 例子: [java] view plain copy public abstract class Father { public Father() { display(); } public void display() { System.out.println("Fath…
我们常用的在a标签中有点击事件:1. a href="javascript:js_method();" 这是我们平台上常用的方法,但是这种方法在传递this等参数的时候很容易出问题,而且javascript:协议作为a的href属性的时候不仅会导致不必要的触发window.onbeforeunload事件,在IE里面更会使gif动画图片停止播放.W3C标准不推荐在href里面执行javascript语句 2. a href="javascript:void(0);"…
.下面的tx要定义 <objects xmlns="http://www.springframework.net" xmlns:db="http://www.springframework.net/database" xmlns:tx="http://www.springframework.net/tx"> .启用事务切面和类型代理 <tx:attribute-driven transaction-manager="T…
window.open调用父窗口中的方法 回调函数: function fun9(ex){ alert(ex); } 调用语句: window.open("RoomSelecter.htm?Ran"+Math.random(), "RoomSelecter"); 窗口页面中调用父窗口中的语句: if (window.opener && window.opener.fun9) { window.opener.fun9("ADF");…
我们常用的在a标签中有点击事件: 1. a href="javascript:js_method();" 这是我们平台上常用的方法,但是这种方法在传递this等参数的时候很容易出问题,而且javascript:协议作为a的href属性的时候不仅会导致 不必要的触发window.onbeforeunload事件,在IE里面更会使gif动画图片停止播放.W3C标准不推荐在href里面执行 javascript语句 2. a href="javascript:void(0);&qu…
利用JQuery的$.ajax()可以很方便的调用asp.net的后台方法.[WebMethod]   命名空间 1.无参数的方法调用, 注意:1.方法一定要静态方法,而且要有[WebMethod]的声明后台<C#>: using System.Web.Script.Services; [WebMethod] public static string SayHello() { return "Hello Ajax!"; } 前台<JQuery>: $(funct…
1.自定义一个接口,暴露服务中的方法 public interface IService {    /**服务中对外暴露的方法 */    void methodInService();} 2.自定一个服务类,继承service类 3.在服务类中新建内部类,继承Binder,实现自定义的接口,并在onBind()方法中返回内部类的实例 public class MyService extends Service { @Override    public IBinder onBind(Inten…
通常javascript代码可以与HTML标签一起直接放在前 端页面中,但如果JS代码多的话一方面不利于维护,另一方面也对搜索引擎不友好,因为页面因此而变得臃肿:所以一般有良好开发习惯的程序员都会把 javascript代码放到独立的js文件中,其他页面通过引入该js文件来使用相应的 javascript代码.用如下方法引用JS文件:<script src="script/admin.js" type="text/javascript"></scr…
一直以来,我都为动态调用WebService方法而烦恼.在.Net环境下,最常用的方法就是采用代理类来调用WebService,可以通过改变代理类的Url属性来实现动态调用,但当xmlns改变时就会出错,似乎要重新绑定Webservice并重新编译后才能再次运行.我还试过网上的一种动态编译并动态调用WebService的方式,这种方法效率低,而且需要有较高的权限,否则编译失败.我曾在Sql Server 2005的CLR存储过程中用此方法调用WebService时,浪费了大半天时间,无论怎么试它…