DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: hebhanax
今日帖子: 49
在线用户: 14
导航: 论坛 -> 文档资料 斑竹:liumazi,ruralboy  
作者:
男 jopher3 (樵夫的马六甲) ▲▲▲▲▲ -
普通会员
2017/6/15 10:16:53
标题:
QuickBurro继续增强功能,新增Java类库接口! 浏览:2743
加入我的收藏
楼主:      QuickBurro中间件的业务逻辑部件的开发手段非常丰富和强大,除了可以用Delphi编写各类服务插件、调用主服务的大量API函数外,近年又扩展了很多第三方平台接口API函数,今年又增加了FCGI、CGI接口支持,使得调用Python、Rubby、Perl、Lua、PHP等其它开发语言编写的业务逻辑也变得简单可行了。

    近日,本人再度为中间件增加了Java类库调用引擎及接口,为中间件服务端插件编写提供了方便调用Jar的API函数,为应用客户端程序编写提供了新的控件和方法,从而,由后端Java程序员为QuickBurro提供业务逻辑开发也切实可行了。

    通过以下配置文件可以为中间件配置Jar调用接口引擎:
{
   "JavaEnabled": true,
   "ProxyInstances": 3,
   "ProxyFileName": "javaproxy\\javaproxy.exe",
   "ProxyPort": 20000
}
{
   "JVMVersion": "1.6",
   "JVMFileName": "F:\\java\\jre6\\bin\\client\\jvm.dll",
   "JARPath": "F:\\java\\jar"
}
     配置后启动中间件,系统会自动加载多进程接口引擎、进行调用任务调度服务。
     服务端插件内,可以使用新增的TAPIJava类中的CallJavaMethod方法来调用Jar中的函数;客户端程序里,可使用TRemoteJava控件的方法来远程调用服务端的Jar函数,接口使用都非常简单,比如,客户端这样调用:
.
procedure TForm1.Button1Click(Sender: TObject);
var
   OutputData: ansistring;
begin
   if RemoteJava1.CallJarMethod('cn/com/tcsl/RSA','DeCode','HIUFJWOEIFJ中文',OutputData) then
      memo1.Lines.Add('调用远程Jar成功,结果='+string(OutputData))
   else
      memo1.Lines.Add('调用远程Jar失败,Error='+RemoteJava1.LastError);
end;
此帖子包含附件:
PNG 图像
大小:3,180B
----------------------------------------------
樵夫的大马甲
作者:
男 jopher3 (樵夫的马六甲) ▲▲▲▲▲ -
普通会员
2017/6/15 10:17:15
1楼: 调用结果:
此帖子包含附件:
PNG 图像
大小:2,857B
----------------------------------------------
樵夫的大马甲
作者:
男 zhang_yang ( ) ★☆☆☆☆ -
盒子活跃会员
2017/6/15 10:44:02
2楼: 支持楼主!!!
----------------------------------------------
^_^
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2017/6/15 11:14:50
3楼: 楼主,java 对象如何防止内存泄露
----------------------------------------------
(C)(P)Flying Wang
作者:
男 delphiteacher (delphiteacher) ▲▲▲▲▲ -
普通会员
2017/6/15 11:18:37
4楼: 牛逼
----------------------------------------------
欢迎加入OrangeUI的app开发阵营:http://www.orangeui.cn/,联系QQ452330643
作者:
男 jopher3 (樵夫的马六甲) ▲▲▲▲▲ -
普通会员
2017/6/15 12:29:12
5楼: @三楼,Java 不熟哇,只实现了delphi与Jvm.dll的对接,没研究你说的问题,估计应该由java方来考虑这事吧
----------------------------------------------
樵夫的大马甲
作者:
男 jopher3 (樵夫的马六甲) ▲▲▲▲▲ -
普通会员
2017/6/15 19:36:30
6楼:     Delphi调用jvm.dll虚拟机的最大问题是多线程调用问题! 为此,特采用专门开发的接口引擎+多进程+任务调度形式进行实现,类似FastCGI接口,每个引擎进程和主服务之间采用Socket长连接来交换数据,这样,一方面解决了直接线程调用jvm.dll会出现异常问题,另一方面又很好地解决了效率问题!  
    下面是默认开启了3个接口引擎进程、客户端使用多线程并发调用的测试(10线程,1000次/线程,共10000次调用):

//
// 多线程并发调用...
procedure TForm1.Button3Click(Sender: TObject);
var
   i: integer;
begin
   for i := 1 to 10 do
      with TCallThread.Create(false) do
         closehandle(handle);
end;

Constructor TCallThread.Create(SuspendedOnCreate: boolean);
begin
   Inherited Create(SuspendedOnCreate);
   FreeOnTerminate:=true;
end;

procedure TCallThread.ShowResult;
begin
   Form1.memo1.Lines.Add(ResultStr);
end;

procedure TCallThread.Execute;
var
   Java: TRemoteJava;
   OutputData: ansistring;
   i: integer;
begin
   Java:=TRemoteJava.Create(nil);
   Java.UserConnection:=form1.UserConn;
   Java.TargetNodeId:=form1.UserConn.UserNodeId;
   for i := 1 to 1000 do
      begin
         if Java.CallJarMethod('cn/com/tcsl/RSA','DeCode','HIUFJWOEIFJ中文',OutputData) then
          ResultStr:='线程'+inttostr(self.ThreadID)+',第'+inttostr(i)+'次调用远程Jar成功,结果='+string(OutputData)
         else
          ResultStr:='线程'+inttostr(self.ThreadID)+',第'+inttostr(i)+'次调用远程Jar失败,Error='+Java.LastError;
         Synchronize(ShowResult);
      end;
   FreeAndNil(Java);
end;
.
此帖子包含附件:
PNG 图像
大小:47.1K
----------------------------------------------
樵夫的大马甲
作者:
男 lxy1997 (lxy) ★☆☆☆☆ -
普通会员
2017/6/18 17:31:13
7楼: 樵夫技术牛人啊
----------------------------------------------
-
作者:
男 blueflag (昆了) ★☆☆☆☆ -
盒子活跃会员
2017/6/20 11:57:26
8楼: 很好很强大,幸好我买了~
----------------------------------------------
-
作者:
男 jopher3 (樵夫的马六甲) ▲▲▲▲▲ -
普通会员
2017/6/21 22:12:12
9楼: 马克,好东西不顶不行
----------------------------------------------
樵夫的大马甲
作者:
男 f7911 (乱世) ★☆☆☆☆ -
普通会员
2017/6/22 2:59:08
10楼: 很漂亮的接口呀
----------------------------------------------
delphi开源2D游戏源代码 delphi即时通讯 聊天室C++ url.gm8.org
作者:
男 hyz_hz (随风) ★☆☆☆☆ -
普通会员
2017/6/22 11:21:46
11楼: 很好,很强大。
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行148.4375毫秒 RSS